2012-10-22 47 views
4

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

同样的问题是posted before,但答案没有为iOS 5的工作或更高版本,如在评论中提到那里。

苹果的documentation说卸载应用程序,并与时钟混乱,使它看起来像应用程序被卸载了一天,但这不适用于iOS5。

另一个答案建议运行常规 - >设置 - >抹掉所有内容和设置 - 我想这一点,但它冻结了我的设备,我最后不得不电源循环吧。无论如何,这是一个严厉的解决方案,对于测试来说是不实际的。

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

有没有办法做到这一点上的iOS5?

回答

5

我发现,如果你的设备是越狱一个可行的解决方案:

  • 使用像iFile的应用程序打开文件/var/mobile/Library/SpringBoard/applicationstate.plist与属性列表观众
  • 找到你的应用程序的包标识符和删除键SBRemoteNotificationClient
  • 重启跳板 - 要么设备,SSH重新引导至设备和运行killall SpringBoard,或者使用Respring应用程式。

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

我已经在iOS 5.1.1测试这一点。

+0

它不必越狱。你可以下载iExplorer并仍然改变它。 – gmogames

+0

即使使用iExplorer,除非设备已越狱,否则无法访问根文件系统。请参阅“如何访问真正的根?”问题在http://www.macroplant.com/faq.php?program=iExplorer+(Mac) –

+0

这是一个很好的解决方案,但不幸的是它有点不完整,至少在iOS 6.1上。在第一次安装/运行一个新的应用程序时,'' - application:didRegisterForRemoteNotificationsWithDeviceToken:'''回调不会被触发,直到用户点击“允许”。在稍后的运行中,即使使用所描述的方法成功重置对话框,在调用registerForRemoteNotificationTypes:后立即发生回调。 :( – patr1ck

0

提供的iOS 5和iOS的代码路径6都不大一样,最简单的方法可能是只是测试在iOS 6的具体行为 - 你在iOS 5中的回调应该是相似的足以使它不成为一个问题。

或者,更改应用程序的包ID。稍微乏味(过去,我需要重新启动Xcode才能注意到bundle ID的变化),并且您需要方便地使用通配符配置文件。

+1

你是什么意思在iOS 6上测试它?我没有验证过,但我认为我尝试的任何选项都不会在iOS 5上运行,而不会在iOS 5上运行。 –