一旦我不允许我可以获取通知令牌,然后从设置中允许它。 (全部不重启应用)

时间:2019-06-20 11:27:22

标签: ios swift push-notification

如果我在应用程序询问时不允许通知。然后我去设置并手动允许通知。

所以问题是我如何在不终止的情况下获取通知令牌并重新启动应用程序。是否可以在不重新启动应用程序的情况下获取令牌。

我已经在

中注册了通知
  • 应用选项方法使应用程序完成了
  • 因此获得了弹出窗口以获取允许或不允许的通知。当时我否认了。
  • 现在,我去设置应用程序并为该应用程序启用该通知。但是并没有重新启动应用程序。
  • 在这种情况下,有一种方法可以获取通知令牌。 (尽管当我在iOS 13中手动更改通知状态时,该应用未重新启动)

2 个答案:

答案 0 :(得分:0)

在您的情况下,您不必担心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方法   宾语。在正常启动时,在启动时调用此方法   顺序。您的应用程序第一次调用此方法时,应用程序对象   联系APN并在您的
上请求特定于应用的设备令牌   代表。

如果令牌已更改,则无需重新启动应用程序。

  

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

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

答案 1 :(得分:0)

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

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

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

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