启用或禁用iPhone推送应用程序内通知启用或禁用iPhone推送应用程序内通知(Enable or

2019-05-13 23:26发布

我有一个iPhone应用程序,这是使接收推送通知。 目前,我可以通过进入iPhone设置/通知禁用推送通知我的应用程序。

但我想补充我的应用程序内的开关或按钮来启用或禁用推送通知。

这是可以做到,因为我看到它在foursqure iphone应用程序做到了。 他们得到了部分设置呼叫通知设置,用户可以启用或禁用不同形式的通知的应用程序。

我看都过网找到这个合适的解决方案,但仍然没有找到方法。 任何一个可以请给任何想法如何做到这一点?

提前致谢 :)

Answer 1:

第一件事是,你can not enable and disable push notification在应用程序内。 如果您发现有些应用程式做的比,必须有解决方法的解决方案。

就像如果你想要做的内部应用程序,然后使用一个标识符,并根据推送通知启用和禁用按钮将其发送到服务器。 所以,你的服务器端编码使用该标识和工作根据这一点。 像标识符是说这是能够比你的服务器将发送通知,否则不是。

您可以检查用户设置enabledisable Push Notifications使用下面的代码。

启用或禁用iPhone推送通知

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) 
 // Yes it is..

希望对你有帮助..



Answer 2:

[FYI -很少有用户报告说,它停止在iOS上的10个工作 ]

您可以轻松地启用和通过调用禁用应用程序推送通知registerForRemoteNotificationTypesunregisterForRemoteNotificationTypes分别试。 我曾尝试这样做,它的工作原理。



Answer 3:

务实,能够以使通过与注册和注销推送通知禁用推送通知。

启用推送通知:

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()


Answer 4:

如果您使用的FireBase发送推送通知到您的设备,您可以使用主题订阅启用订阅设备,并从主题的订阅用户推送通知,当你不希望用户接收那些已经退订设备推送通知。

用户订阅一个主题只需导入火力地堡,然后用这个方法:

Messaging.messaging().subscribe(toTopic: "topicName")

和退订用户使用:

Messaging.messaging().unsubscribe(fromTopic: "topicName")


文章来源: Enable or Disable Iphone Push Notifications inside the app