Objective c 一旦创建,APNS设备令牌是否会更改?
推送通知设备令牌创建后是否会更改Objective c 一旦创建,APNS设备令牌是否会更改?,objective-c,apple-push-notifications,Objective C,Apple Push Notifications,推送通知设备令牌创建后是否会更改 示例应用程序何时更新?或者,在任何其他情况下,它都可以更改???它不应该更改,除非您的应用程序被还原到新设备上(此时不会要求它再次接受推送通知,只需向您发送注册呼叫,此时您应该接受新令牌) 但苹果并不保证它不会改变(因此文档中从未提及)。你最好做最坏的打算,并假设它有一天会改变。此外,通过定期向服务器发送令牌,您可以删除一段时间未注册的令牌,这些令牌可能已经卸载了您的应用程序或不久前失去了兴趣(文档确实将此指定为需要的行为!)。 此阶段令牌信任的形式确保只有AP
示例应用程序何时更新?或者,在任何其他情况下,它都可以更改???它不应该更改,除非您的应用程序被还原到新设备上(此时不会要求它再次接受推送通知,只需向您发送注册呼叫,此时您应该接受新令牌) 但苹果并不保证它不会改变(因此文档中从未提及)。你最好做最坏的打算,并假设它有一天会改变。此外,通过定期向服务器发送令牌,您可以删除一段时间未注册的令牌,这些令牌可能已经卸载了您的应用程序或不久前失去了兴趣(文档确实将此指定为需要的行为!)。 此阶段令牌信任的形式确保只有APN生成 它将在以后兑现的代币,它可以保证 设备交给它的令牌与以前的令牌相同 为该特定设备设置,并且仅为该设备设置 如果用户将备份数据恢复到新设备或重新安装 在操作系统中,设备令牌发生更改
苹果的官方文件对此并不清楚。我观察到的是:对于给定的设备、应用程序和域(生产与沙箱),令牌是不变的。我认为,为了使系统可靠地工作,这一点必须保持不变。考虑应用程序更新触发新APN令牌的情况;如果我使用的是最棒的类似Twitter的新应用程序,并且启用了通知功能,那么当我从iTunes更新我的应用程序时会发生什么?我是否应该期望,即使在我将更新“同步”到我的设备上之后,我还没有运行应用程序,它仍将继续发送通知?更改应用程序的行为不会影响APN系统,因为即使您尚未运行更新的应用程序,操作系统也可以代表您接收通知 明确地说,苹果声明“应用程序每次启动时都应该[向APN服务器]注册,并向其提供商提供当前令牌”。我完全同意;这样做将保护您的应用程序免受错误假设或异常情况的影响 对的回答之一表明,每个“操作系统安装”的设备令牌都是唯一的;从备份恢复到设备将保留令牌,但擦除设备将使其获得新令牌。这与苹果无缝操作和隐私的意图完全一致:擦除设备的严重程度可能足以保证新的关联,但在操作系统更新后恢复图像的用户希望保留其现有通知。如果我回忆起iPad上最近的iOS5更新,我在升级后恢复了最新的备份,因此这将保持我的通知令牌的一致性。[编辑:将备份还原到其他设备不会复制令牌。] 警告: 我没有关于这个主题的明确知识,只是一些与APN(作为第三方开发人员)合作的合理经验。一如既往,最好验证您的假设
更新(2012年6月): 我最近有机会a>与苹果工程师交谈,b>运行一些真实世界的测试,我想展示结果: 完整地说,当我谈到返回APN令牌时,我假设的是单个绑定标识符/应用程序的上下文 首先,苹果的工程师说,两台设备不可能返回相同的APN。尽管有以下评论,我仍无法确定这一点失败的情况 其次,以下是升级测试顺序和结果:
从以前的测试中,我知道APN令牌现在不同了
APN令牌现在与步骤1相同
APN令牌更改
APN令牌再次改变;此外,它是不同的,与原始令牌或“克隆”令牌不匹配
APN令牌现在与步骤1相同
更新(2012年8月) 我刚刚意识到我没有添加这个:设备令牌将发生变化。一位苹果开发者告诉我代币确实过期了(我想是两年后)。出于许多目的,这足够长,可以认为是不变的
[如果我必须每两年用新的代币更新测试脚本,我并不担心,特别是因为我每年都更换手机。]是的,设备代币可以更改 只要你的应用程序收到令牌,它就应该存储它。然后,无论何时接收到新令牌(最终会发生),将新令牌与存储的令牌进行比较,如果它们不同:
nil
)