【问题标题】:How to separate sandbox and production device token of iOS APNS notification如何分离 iOS APNS 通知的沙箱和生产设备令牌
【发布时间】:2012-09-28 09:35:17
【问题描述】:

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

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

【问题讨论】:

标签: ios notifications apple-push-notifications


【解决方案1】:

您可能应该使用某种 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。

【讨论】:

  • 如果能够仅通过代码来判断就好了,但这看起来可能是唯一的方法。
  • 例如,我已经有一个用于 uuid 的字段,以及一个作为通知引擎的字段。所以对于调试版本,我应该将通知引擎设置为“applesand”或类似的。
  • 开发设备令牌和生产设备令牌是同一个字符串吗?
  • @luyuan - 每个环境的令牌都不一样
  • 是的,我发现了。但我不知道为什么生产推送永远不会以 adhoc 模式到达我的 iPhone。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多