一旦我不允许它,我可以得到通知令牌然后从设置中允许它。 (所有无需重新启动应用程序)

Posted

技术标签:

【中文标题】一旦我不允许它,我可以得到通知令牌然后从设置中允许它。 (所有无需重新启动应用程序)【英文标题】:Can i get notification token once i did not allow it and Then allow it from settings. (All without app restart) 【发布时间】:2019-06-20 11:27:22 【问题描述】:

如果我在应用要求时不允许通知。然后我去设置并手动允许通知。

所以问题是我如何在不杀死并重新启动应用程序的情况下获得通知令牌。有没有办法在不重启应用的情况下获取令牌。

我已经在

中注册了通知 使用选项方法完成应用程序 所以得到了弹出窗口来获取通知是否允许。当时我已经否认了。 现在我进入应用设置并为应用启用通知。但没有重新启动应用程序。 在这种情况下有办法获取通知令牌。 (虽然当我在 iOS 13 中手动更改通知状态时应用程序没有重新启动)

【问题讨论】:

获取远程通知令牌不需要权限;你可以要求它。您确实需要显示警报的权限;如果您发送推送通知但您没有获得该权限,则不会显示警报。 @Paulw11 感谢您的回答。但是我需要知道当您允许设置通知然后返回应用程序时如何检索设备令牌。有没有办法在不重新启动应用程序的情况下检索令牌。请让我知道,因为我被困了 4 个小时。 这可能有助于***.com/a/10191220/285190 你为什么在乎?只需获取令牌并将其注册到您的服务器即可。用户可以随时更改通知是否实际显示;您的服务器始终发送通知;如果用户禁用了通知,则推送会以静默方式传递到您的应用。 @Paulw11@Flexicoder 感谢您的宝贵时间。明白了 【参考方案1】:

当用户返回应用时 (例如在函数applicationWillEnterForeground()中) 称之为: UIApplication.shared.registerForRemoteNotifications().

如果用户在设置中开启了推送通知,

func application(_ application: UIApplication, 
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)

将被调用,您可以在那里获取设备令牌。

【讨论】:

【参考方案2】:

在您的情况下,您不必担心 APNs 令牌。 Apple 发送令牌独立于批准通知与否。 https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1

ios 和 tvOS 中,您可以通过以下方式为您的应用启动 APNs 注册 调用 UIApplication 的 registerForRemoteNotifications 方法 目的。作为正常启动的一部分,在启动时调用此方法 顺序。当你的应用第一次调用这个方法时,app 对象 联系 APN 并在您的上请求特定于应用的设备令牌 代表。

如果令牌更改,您不需要重新启动应用程序。

如果在您的应用运行时设备令牌发生变化,则应用对象 调用 应用程序:didRegisterForRemoteNotificationsWithDeviceToken:委托 方法再次通知您更改。

更新 也许我不明白你的问题。 但一步一步: 1) 应用程序确实注册了通知 2) 用户看到关于通知的系统警报 3) 用户拒绝通知 4) 应用程序无论如何都会获得 APNs 的设备令牌 5) 应用程序发送令牌到任何服务(您的服务器 api、Firebase、OneSignal 等) 6) 您的服务器无论如何都会发送通知到 APN(但用户看不到此通知) 7) 用户打开应用程序设置和通知 8) 你什么都没做 9) 无论如何,您的服务器都会向 APNs 发送通知 10) 通知只显示给用户并到达应用程序

【讨论】:

你好@Aisner,我想知道当我们获得远程通知用户的许可时,用户首先拒绝它。然后从将其设置为通知。那我们怎么才能得到通知呢。 嗨@JasmineChaniara,我更新了答案。您对分步部分有疑问吗?

以上是关于一旦我不允许它,我可以得到通知令牌然后从设置中允许它。 (所有无需重新启动应用程序)的主要内容,如果未能解决你的问题,请参考以下文章

我应该在我的用户名中允许表情符号吗?

元素数超过 SQL 数据透视语句中允许的最大值

在 ag-grid 过滤器中允许空格

如何在颤动中允许浮动通知和锁定屏幕通知编程

如何在春季授权服务器中允许端点?

输入标签内的 HTML 名称属性中允许使用哪些字符?