8

我不小心将沙盒和生产设备令牌混合在同一个数据库表中。这导致一些安装生产应用程序的设备无法收到推送通知。

如何从数据库表中分离沙盒令牌和生产令牌?非常感谢您的帮助!!谢谢!

4

1 回答 1

7

您可能应该使用某种 UDID 来键入您的数据库表(您可以通过散列捆绑 ID 和设备的 MAC 地址来创建自己的)和一个指示令牌是“开发”还是“生产”的第二个字段“令牌。第三个字段可以是实际的令牌。

在 didRegisterForRemoteNotificationsWithDeviceToken 委托方法中的应用程序委托中,您可以添加逻辑以确定您的应用程序是在开发模式还是生产模式下运行,并使用基于 UDID 的设备令牌和应用程序运行的“模式”更新数据库。

您的代码可能如下所示:

- (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
}

为此,您需要转到您的项目 -> 构建设置。在 Preprocessor Macros 部分输入 CONFIGURATION_ 并按 Enter。这应该为您的每个构建配置创建一个预处理器宏。在这种情况下,我的构建配置是 AdHoc、Debug、Distribution 和 Release。

它为我创建了 CONFIGURATION_AdHoc、CONFIGURATION_Debug、CONFIGURATION_Distribution 和 CONFIGURATION_Release。

于 2012-11-25T22:24:29.290 回答