我在我的应用中集成了推送通知。我在AppDelegate
中获取了设备令牌,并通过LoginViewController
发送到服务器。当用户点击“不允许”时发出警报我没有打电话给我的设备注册服务。但我不知道如何处理这种情况。
如果用户在推送通知提醒中单击“不允许”并进入应用程序内部,则他会打开设备设置并启用推送通知。
在这种情况下,如何调用我的设备注册服务? 请帮我 感谢
答案 0 :(得分:3)
实际上没有代表可以观察用户是否更改了推送通知的状态。
但您可以在applicationDidBecomeActive:
这样的方法中使用此方法进行检查
目标C:
iOS 8及以上
if (![[UIApplication sharedApplication] isRegisteredForRemoteNotifications]){
NSLog(@"push notifications are disabled");
}
适用于iOS 10
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) {
NSLog(@"push notifications are disabled");
}
斯威夫特:
iOS 8及以上
let isRegisteredForRemoteNotifications = UIApplication.shared.isRegisteredForRemoteNotifications
if isRegisteredForRemoteNotifications {
NSLog(@"push notifications are enabled");
} else {
NSLog(@"push notifications are disabled");
}
适用于iOS 10
let current = UNUserNotificationCenter.current()
current.getNotificationSettings(completionHandler: { (settings) in
if settings.authorizationStatus == .denied {
NSLog(@"push notifications are disabled");
}
})
希望它有所帮助。
答案 1 :(得分:0)
<强> 注意 强>
设置中的任何更改都会重新启动应用。 因此,如果用户从设置中打开通知,那么您的应用程序将重新启动,您将在app-delegate中获取设备令牌,然后您可以将其发送到您的服务器。如果您的登录名是本地保存而您是在login api中发送device_token,那么您需要使用单独的服务将device_token发送到服务器。
答案 2 :(得分:-1)
在AppDelegate中
如果用户允许通知,则会在func bellow中返回令牌,您将调用您的服务发送到您的服务器
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
}
如果用户不允许通知,您将收到func bellow中的错误
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
}