我不小心并在同一个db表中混合沙箱和生产设备令牌.它导致一些安装生产应用程序的设备无法接收推送通知.
如何从db表中分离沙箱令牌和生产令牌?非常感谢您的帮助!!谢谢!
解决方法
您可能应该使用某种UDID键入数据库表(您可以通过散列设备的包ID和MAC地址来创建自己的数据库)以及指示令牌是“开发”还是“生产”的第二个字段“令牌.第三个字段可以是实际令牌.
在didRegisterForRemoteNotificationsWithDevicetoken委托方法的app委托中,您可以添加逻辑以确定您的应用程序是在开发模式与生产模式下运行,并使用基于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 }
为此,您需要转到您的项目 – >构建设置.在“预处理器宏”部分中,键入CONfigURATION_并按Enter键.这应该为每个构建配置创建一个预处理器宏.在这种情况下,我的构建配置是AdHoc,Debug,distribution和Release.
它为我创建了CONfigURATION_AdHoc,CONfigURATION_Debug,CONfigURATION_distribution和CONfigURATION_Release.