29

当我第一次使用 Xcode 安装我的 iOS 应用程序时,我的 iPhone 会询问我是否要启用推送通知。

我可以发送通知,并且徽章会显示我发送的号码。

当我从我的 iPhone 中删除应用程序并在 Xcode 中重建它并在我的 iPhone 上重新安装它(使用 Xcode)时:

  • 设备不会询问我是否要启用推送。
  • 徽章在那里并记住最后一个数字。

我在新设备(安装了 IPA)上尝试了相同的应用程序,它要求我提供权限。

我怎样才能完全让我的设备忘记应用程序?

谢谢

4

6 回答 6

38

从 Apple 的文档中针对 iOS 7 及更高版本进行了更新:

在 iOS 7 及更高版本上,启用推送的应用第一次注册推送通知时,iOS 会询问用户是否希望接收该应用的通知。一旦用户对此警报做出响应,除非设备已恢复或应用程序已卸载至少一天,否则它不会再次显示。

如果你想模拟你的应用程序的首次运行,你可以让应用程序卸载一天。您可以按照以下步骤实现后者,而无需实际等待一天:

  1. 从设备中删除您的应用程序。
  2. 完全关闭设备并重新打开。
  3. 前往“设置”>“通用”>“日期和时间”,将日期提前一天或更长时间。
  4. 再次完全关闭设备,然后重新打开。

对于 iOS 5 和 iOS6:

通过从备份中恢复设备来重置推送通知权限警报 (r. 11450187)。以下是有效执行此操作的步骤:

  1. 使用 Xcode Organizer 在设备上安装您的应用程序。关键是第一次安装应用程序而不运行它。
  2. 使用 iTunes 备份设备。
  3. 运行应用程序。将显示推送通知权限警报。
  4. 当您要重置推送通知权限警报时,请从您在第一步中创建的备份中恢复设备。

https://developer.apple.com/library/content/technotes/tn2265/_index.html

于 2013-07-10T00:28:17.067 回答
27

有一个解决方法,包括将系统时间提前两天,重新启动设备,然后将系统时间改回当前时间。iOS 设计为每个应用程序每天只请求一次推送权限。

在 iOS 上重置推送通知权限警报 启用推送的应用程序首次注册推送通知时,iOS 会询问用户是否希望接收该应用程序的通知。一旦用户对此警报做出响应,除非设备已恢复或应用程序已卸载至少一天,否则它不会再次显示。

如果你想模拟你的应用程序的首次运行,你可以让应用程序卸载一天。您可以通过将系统时钟提前一天或更长时间,完全关闭设备,然后重新打开设备来实现后者,而无需实际等待一天。

http://developer.apple.com/library/ios/#technotes/tn2265/_index.html

于 2012-09-11T13:01:37.550 回答
5

我和你在同一条船上。我发现最有帮助的是稍微更改捆绑标识符。

示例:您的捆绑包标识符是 com.company.app。如果您需要测试启用推送通知,请将标识符更改为 com.company.app1。它将作为新应用安装并具有新的推送通知权限设置。

只需确保在完成测试后将其改回即可。

于 2013-09-04T23:13:27.613 回答
2

首先,iOS记住push settings,badge值没有关系,你没有得到push notification。我确信还有其他问题。是的,iOS记住push settingsbadge重视应用程序。当您第一次在设备上安装时,它会要求您确认推送。badge您可以通过调用重置值setApplicationIconBadgeNumber:

如果要重置push settings,则可以通过重置所有setting设备来完成。

于 2012-09-11T12:51:16.413 回答
0

如果您有任何应用程序初始化代码(例如,当文档文件夹中没有可用的数据库时复制/初始化数据库。所以您知道它已重新安装)您可以将徽章计数重置为零。

同样,如果用户从包中手动删除 db 文件,或者您的应用程序没有此类初始化设置,这可能会失败。

于 2013-09-20T11:51:57.753 回答
0

按照以下步骤通过以下步骤刺激您的应用程序的首次运行:

1)。从设备中删除您的应用程序。

2)。完全关闭设备并重新打开。

3)。前往“设置”>“通用”>“日期和时间”,将日期提前一天或更长时间。

4)。再次完全关闭设备,然后重新打开。

于 2013-10-10T23:55:44.203 回答