C'è un modo per determinare se un token del dispositivo è sandbox o distribuzione? Stiamo testando e l'applicazione a volte è firmata con un certificato di sviluppo e altri sono firmati con un certificato ad hoc (certificato di distribuzione). Questo perché passiamo l'applicazione ad alcuni dei 100 dispositivi di test ad hoc forniti e stiamo anche costruendo app firmate per lo sviluppo sui nostri dispositivi. Poiché l'invio di una notifica push richiede che selezioniamo il server push e il file pem appropriati, sarebbe bello essere in grado di determinare se il token è sandbox o distribuzione per inviare le notifiche nel modo appropriato in modo che la notifica push abbia esito positivo. A volte dobbiamo usare il profilo di distribuzione per firmare le nostre applicazioni, quindi testare il sistema di notifica push ci impone di fornire queste notifiche correttamente.Determina se il token del dispositivo è sandbox o distribuzione
risposta
- Aprire progetto impostazione
- Vai a impostazioni di pre-elaborazione
- Sotto "Le macro del preprocessore non utilizzati in intestazioni precompilate" build (supponendo che non sono ramificazione codice in un file PCH), aggiungere TOKEN_ENV_SANDBOX = 0 in uscita e TOKEN_ENV_SANDBOX = 1 in Debug e Ad Hoc.
- Nel codice ovunque basta usare la direttiva del compilatore
#if TOKEN_ENV_SANDBOX
NSLog (@ "TOKEN_ENV == PRODUZIONE!");
#endif#if TOKEN_ENV_SANDBOX
NSLog (@ "TOKEN_ENV == sandbox");
#endif
EDIT: Corretto un problema di cui sopra.
Ecco quello che Apple ha da dire
È possibile determinare in Xcode quale ambiente ci si trova dalla selezione di un'identità di firma del codice. Se vedi una coppia di certificati/provisioning "iPhone Developer: Firstname Lastname", sei nell'ambiente sandbox. Se vedi una coppia di certificati/profili di distribuzione "Distribuzione di iPhone: nome azienda", sei nell'ambiente di produzione.
Aggiungere una macro di preprocessore alle impostazioni di generazione del target in Apple LLVM 7.0 - Preelaborazione. Poi sotto Debug aggiungere qualcosa come:
isRunningInDevModeWithDevProfile=1
Poi, nel tuo PCH, si può fare qualcosa di simile:
// AZ - 01282016 - Determine which environment we are running in for APNS
# ifdef isRunningInDevModeWithDevProfile
# define isAPNSSandbox YES
#else
# define isAPNSSandbox NO
#endif
E poi dove è necessario verificare nel vostro codice, è possibile fare questo:
NSString *ifAppIsRunningFromXcodeUsingNonReleaseProfile;
if (isAPNSSandbox) {
ifAppIsRunningFromXcodeUsingNonReleaseProfile = @"dev";
} else {
ifAppIsRunningFromXcodeUsingNonReleaseProfile = @"prod";
}
passiamo questo valore di nuovo al nostro server APNS in modo che sappia quale strada prendere quando si chiama APNS di Apple.
La ragione per cui suggerisco questo è che in questo caso, se si lascia la macro del preprocessore indefinita negli obiettivi non di debug, ciò non causerà un errore quando si tenta di crearlo.
Certo, ci sono soluzioni con una forma migliore, ma questo è un modo abbastanza sicuro e veloce per ottenere questa funzionalità attiva e funzionante.
Ho letto tutte le risposte sopra e sono tutte corrette ma non rispondere alla domanda di base: "È una sandbox o distribuzione di token dispositivo?".
È perché rileva la configurazione di build, non di qualità token.
Dopo aver trascorso diversi giorni a risolvere questo problema, ho avuto modo di soluzione straigt-forward:
test gettone che hai con il Real Apple Push Notification Server. È possibile utilizzare una semplice app che parlerà con il server e sarà sufficiente configurarla.
Ho usato questa semplice app "Easy APNs Provider" per macOS o altro.
https://itunes.apple.com/us/app/easy-apns-provider-push-notification/id989622350?mt=12
mio problema centrale in MacOS app è che continuo a ricevere token di produzione sia in Debug e Release configurazioni.
Quando si rileva un problema, è possibile che i certificati invochino i certificati per essere sicuri al 100% che non saranno compromessi.
- 1. Determina se il token al portatore è scaduto o è appena autorizzato
- 2. Determina il dispositivo del filesystem in Python
- 3. Determina se il negozio è aperto?
- 4. Determina se il modulo Magento è abilitato
- 5. Qual è la differenza tra l'UDID del dispositivo iPhone, l'ID del dispositivo iPhone e il token del dispositivo iPhone?
- 6. Determina se WindowServer è disponibile?
- 7. Determina se LTE è attivato?
- 8. Determinare se il dispositivo è dotato di touchscreen o meno
- 9. Token dispositivo Iphone - NSData o NSString
- 10. Determina se l'oggetto è intero
- 11. Determina se l'app è in esecuzione o no
- 12. Determina se un grafico è semi-connesso o no
- 13. android determina se il dispositivo è in linguaggio da destra a sinistra/layout
- 14. Invalidate il token push del dispositivo iOS sul logout utente
- 15. determina la distribuzione del sistema operativo di un'immagine mobile Immagine
- 16. Il layout cambia se la lingua del dispositivo è l'arabo
- 17. Determina in modo affidabile se il modale angolare-ui è aperto o chiuso (mostrato o nascosto)
- 18. Salesforce: distribuzione tra ambienti (sandbox, live, ecc.)
- 19. Determina se l'azione del controllore è autorizzata prima di chiamarla
- 20. C++ determina se la classe è paragonabile
- 21. Determina se un websocket send() è finito
- 22. Clojure: Determina se una variabile è dichiarata
- 23. Identifica se il dispositivo è Kindle
- 24. Verifica se il dispositivo è iPad
- 25. Determina se il file copiato negli Appunti è un'immagine
- 26. Come posso ottenere il token di identità nella sandbox paypal?
- 27. Determina se un file è aperto
- 28. python: determina se una classe è nidificata
- 29. Come separare sandbox e dispositivo di produzione token di notifica APNS iOS
- 30. Come si determina la memoria del dispositivo disponibile in OpenCL?
Come aggiungere Adhoc alle "macro di preprocessore non utilizzate nelle intestazioni precompilate" – siva
Posso sapere se questo è ancora valido? Ho notato che alcuni utenti sono identificati come token sandbox, con la stessa versione da App Store. – neobie
Perché per Ad Hoc, il TOKEN_ENV_SANDBOX è 0? E per Debug, TOKEN_ENV_SANDBOX = 1? C'è un errore? – neobie