【发布时间】:2012-09-28 09:35:17
【问题描述】:
我不小心将沙盒和生产设备令牌混合在同一个数据库表中。这导致一些安装生产应用程序的设备无法收到推送通知。
如何从数据库表中分离沙盒令牌和生产令牌?非常感谢您的帮助!!谢谢!
【问题讨论】:
标签: ios notifications apple-push-notifications
我不小心将沙盒和生产设备令牌混合在同一个数据库表中。这导致一些安装生产应用程序的设备无法收到推送通知。
如何从数据库表中分离沙盒令牌和生产令牌?非常感谢您的帮助!!谢谢!
【问题讨论】:
标签: ios notifications apple-push-notifications
您可能应该使用某种 UDID(您可以通过散列捆绑 ID 和设备的 MAC 地址来创建自己的 UDID)和指示令牌是否为“开发”或“生产”令牌。第三个字段可以是实际的令牌。
在 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。
【讨论】: