如何分离iOS APNS通知的沙盒和生产设备令牌

如何分离iOS APNS通知的沙盒和生产设备令牌,ios,notifications,apple-push-notifications,Ios,Notifications,Apple Push Notifications,我不小心在同一个db表中混合了沙盒和生产设备令牌。这导致一些安装生产应用程序的设备无法接收推送通知 如何从db表中分离沙箱令牌和生产令牌?非常感谢你的帮助!!谢谢 您可能应该使用某种UDID(您可以通过散列捆绑ID和设备的MAC地址来创建自己的UDID)和第二个字段为数据库表设置关键字,该字段指示令牌是“开发”还是“生产”令牌。第三个字段可以是实际的令牌 在didRegisterForRemoteNotificationsWithDeviceToken委托方法中的应用程序委托中,您可以添加逻辑以

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


如何从db表中分离沙箱令牌和生产令牌?非常感谢你的帮助!!谢谢

您可能应该使用某种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
}
为此,您需要转到项目->构建设置。在“预处理器宏”部分键入“配置”,然后按Enter键。这应该为每个生成配置创建一个预处理器宏。在本例中,我的构建配置是临时、调试、分发和发布


它为我创建配置调试、配置调试、配置分发和配置发布

如果能通过代码来判断就好了,但这可能是唯一的方法。例如,我已经有了一个uuid字段,再加上一个作为通知引擎的字段。因此,对于调试构建,我应该将通知引擎设置为“applesand”或类似。开发设备令牌和生产设备令牌是同一字符串吗?@luyuan-否每个环境的令牌都不同是的,我发现了。但我不知道为什么我的iPhone在临时模式下无法实现生产推广。回答如下: