我有一个iPhone应用程序,这是使接收推送通知。 目前,我可以通过进入iPhone设置/通知禁用推送通知我的应用程序。
但我想补充我的应用程序内的开关或按钮来启用或禁用推送通知。
这是可以做到,因为我看到它在foursqure iphone应用程序做到了。 他们得到了部分设置呼叫通知设置,用户可以启用或禁用不同形式的通知的应用程序。
我看都过网找到这个合适的解决方案,但仍然没有找到方法。 任何一个可以请给任何想法如何做到这一点?
提前致谢 :)
我有一个iPhone应用程序,这是使接收推送通知。 目前,我可以通过进入iPhone设置/通知禁用推送通知我的应用程序。
但我想补充我的应用程序内的开关或按钮来启用或禁用推送通知。
这是可以做到,因为我看到它在foursqure iphone应用程序做到了。 他们得到了部分设置呼叫通知设置,用户可以启用或禁用不同形式的通知的应用程序。
我看都过网找到这个合适的解决方案,但仍然没有找到方法。 任何一个可以请给任何想法如何做到这一点?
提前致谢 :)
第一件事是,你can not enable and disable
push notification
在应用程序内。 如果您发现有些应用程式做的比,必须有解决方法的解决方案。
就像如果你想要做的内部应用程序,然后使用一个标识符,并根据推送通知启用和禁用按钮将其发送到服务器。 所以,你的服务器端编码使用该标识和工作根据这一点。 像标识符是说这是能够比你的服务器将发送通知,否则不是。
您可以检查用户设置enable
或disable
Push Notifications
使用下面的代码。
启用或禁用iPhone推送通知
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone)
// Yes it is..
希望对你有帮助..
[FYI -很少有用户报告说,它停止在iOS上的10个工作 ]
您可以轻松地启用和通过调用禁用应用程序推送通知registerForRemoteNotificationTypes
和unregisterForRemoteNotificationTypes
分别试。 我曾尝试这样做,它的工作原理。
务实,能够以使通过与注册和注销推送通知禁用推送通知。
启用推送通知:
if #available(iOS 10.0, *) {
// For iOS 10.0 +
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
if error == nil{
DispatchQueue.main.async(execute: {
UIApplication.shared.registerForRemoteNotifications()
})
}
}
}else{
// Below iOS 10.0
let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
//or
//UIApplication.shared.registerForRemoteNotifications()
}
委托方法
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// .. Receipt of device token
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// handle error
}
关闭推送通知:
UIApplication.shared.unregisterForRemoteNotifications()
如果您使用的FireBase
发送推送通知到您的设备,您可以使用主题订阅启用订阅设备,并从主题的订阅用户推送通知,当你不希望用户接收那些已经退订设备推送通知。
用户订阅一个主题只需导入火力地堡,然后用这个方法:
Messaging.messaging().subscribe(toTopic: "topicName")
和退订用户使用:
Messaging.messaging().unsubscribe(fromTopic: "topicName")