5

我正在开发一个使用推送通知的应用程序,并在装有 iOS 5.1.1 的设备上进行测试。我想测试在应用程序首次运行期间提示用户推送通知的场景。该对话框在我第一次调用 registerForRemoteNotificationTypes 时出现,但再也不会出现,即使该应用程序是从头开始重新安装的。如何清除设置以使对话框再次出现?

之前发布了相同的问题,但答案不适用于 iOS 5 或更高版本,如评论中所述。

Apple 的文档说要卸载该应用程序并弄乱时钟以使其看起来该应用程序已卸载一天,但这在 iOS5 上不起作用。

另一个答案建议运行 General -> Reset -> Erase All Content And Settings - 我试过这个,但它冻结了我的设备,我最终不得不重新启动它。无论如何,这是一个不实用的测试方法。

另一个答案建议从 /private/var/mobile/Library/RemoteNotification/Clients.plist 中删除您的应用程序条目,但该文件在 iOS5 上不存在。

有没有办法在 iOS5 上实现这一点?

4

2 回答 2

5

如果您的设备越狱,我找到了一个可行的解决方案:

  • 使用 iFile 之类的应用程序/var/mobile/Library/SpringBoard/applicationstate.plist通过属性列表查看器打开文件
  • 找到您的应用的捆绑标识符并删除密钥SBRemoteNotificationClient
  • 重新启动 SpringBoard - 重新启动设备,通过 SSH 连接到设备并运行killall SpringBoard,或者使用 Respring 应用程序。

下次运行您的应用程序时,它将再次显示通知权限对话框。

我已经在 iOS 5.1.1 上对此进行了测试。

于 2012-10-26T18:23:14.270 回答
0

如果您的 iOS 5 和 iOS 6 的代码路径没有太大差异,最简单的选择可能是只测试 iOS 6 上的特定行为——您在 iOS 5 上获得的回调应该足够相似,不会成为问题。

或者,更改应用程序的捆绑 ID。有点乏味(过去我需要重新启动 Xcode 才能注意到捆绑 ID 的变化),并且您需要一个方便的通配符配置文件。

于 2012-10-26T19:56:26.923 回答