【问题标题】:Reset push notification permission setting in ios5在 ios5 中重置推送通知权限设置
【发布时间】:2012-10-12 19:57:24
【问题描述】:

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

同样的问题是posted before,但答案不适用于 iOS 5 或更高版本,正如那里的 cmets 所述。

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

另一个答案建议运行常规 -> 重置 -> 删除所有内容和设置 - 我试过这个,但它冻结了我的设备,我最终不得不重新启动它。无论如何,这是一个不实用的测试方法。

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

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

【问题讨论】:

    标签: iphone push-notification


    【解决方案1】:

    我找到了一个适用于您的设备越狱的解决方案:

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

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

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

    【讨论】:

    • 不必越狱。您可以下载 iExplorer 并仍然进行更改。
    • 即使使用 iExplorer,除非设备越狱,否则您无法访问根文件系统。请参阅“如何访问真正的根?”问题macroplant.com/faq.php?program=iExplorer+(Mac)
    • 这是一个很好的解决方案,但不幸的是它有些不完整,至少在 iOS 6.1 上是这样。在首次安装/运行新应用程序时,- application:didRegisterForRemoteNotificationsWithDeviceToken: 回调不会被触发,直到用户点击“允许”。在以后的运行中,即使使用您描述的方法成功重置对话框,回调也会在调用 registerForRemoteNotificationTypes: 后立即发生。 :(
    • patr1ck:我还没有在 iOS 6.1 上进行验证,但最后我检查了回调 always 在调用 registerForRemoteNotificationTypes 后立即发生。 documentation 没有说明等待对话。
    • 在iOS7中,这个文件在这个位置:/private/var/mobile/Library/BackBoard/applicationState.plist
    【解决方案2】:

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

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

    【讨论】:

    • 在 iOS 6 上测试是什么意思?我尚未验证,但我认为我尝试的任何选项在 iOS 6 上都不会比在 iOS 5 上更有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2011-10-10
    • 2011-01-27
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多