2012-09-28 2 views
6

Ich bin nicht vorsichtig und mische Sandbox- und Produktionsgeräte-Tokens in derselben db-Tabelle. Es führt dazu, dass einige Geräte, die die Produktions-App installieren, keine Push-Benachrichtigung erhalten können.So trennen Sie Sandbox- und Produktionsgeräte-Token von iOS APNS-Benachrichtigung

Wie trennt man Sandbox-Token und Produktionstoken von der db-Tabelle? Deine Hilfe wird hoch geschätzt!! Vielen Dank!

+0

Beantworten Sie hier: http://StackOverflow.com/Questions/10146911/Determine-Whether-app-is-communicating-with-Apns-Sandbox-or-production-environme – phatmann

Antwort

6

Sie sollten Ihre Datenbanktabelle wahrscheinlich mit einer Art UDID verschlüsseln (Sie können Ihre eigenen erstellen, indem Sie die Paket-ID und die MAC-Adresse des Geräts hashen) UND ein zweites Feld, das angibt, ob das Token eine "Entwicklung" ist oder ein "Produktions" -Token. Das dritte Feld kann das tatsächliche Token sein.

In Ihrem App-Delegaten in der Delegate-Methode didRegisterForRemoteNotificationsWithDeviceToken können Sie Logik hinzufügen, um festzustellen, ob Ihre App im Entwicklungs- oder Produktionsmodus ausgeführt wird, und Ihre Datenbank anhand der UDID und des Modus der App aktualisieren laufen in

Ihr Code etwa wie folgt aussehen:.

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
// Update the device token record in our database 
#if !defined (CONFIGURATION_Distribution) 
    // Update the database with our development device token 
#endif 

#if defined (CONFIGURATION_Distribution) 
    // Update the database with our production device token 
#endif 
} 

das Sie zu Ihrem Projekt gehen müssen, um tun -> Einstellungen erstellen. Geben Sie im Abschnitt Preprocessor Macros CONFIGURATION_ ein und drücken Sie die Eingabetaste. Dies sollte ein Präprozessor-Makro für jede Ihrer Build-Konfigurationen erstellen. In diesem Fall sind meine Build-Konfigurationen AdHoc, Debug, Distribution und Release.

Es erstellt CONFIGURATION_AdHoc, CONFIGURATION_Debug, CONFIGURATION_Distribution und CONFIGURATION_Release für mich.

+0

Es wäre schön, in der Lage zu sein, nur zu sagen durch den Code, aber das sieht vielleicht die einzige Möglichkeit aus, es zu tun. –

+0

Zum Beispiel habe ich bereits ein Feld für die UUID, plus ein Feld, das die Benachrichtigungs-Engine ist. Also sollte ich für Debug-Builds die Benachrichtigungs-Engine auf 'applesand' oder ähnliches setzen. –

+0

Sind das Token des Entwicklungsgeräts und das Token des Produktionsgeräts die gleiche Zeichenfolge? –