it-swarm.com.ru

Включить/отключить Apple Push Notification из приложения iPhone?

У меня есть еще одно сомнение в APNS. То есть, когда приложение запускается впервые, оно запрашивает разрешение на push-уведомление Apple, если пользователь принял их, они могут получать уведомления. Если пользователь отменил, они не могут получать никаких уведомлений. Я чист?? 

Теперь я сомневаюсь,

  1. В первый раз, если пользователь отменил службу push-уведомлений из приложения (нажал кнопку Cancel) через несколько дней, если они хотят получать Apple Push-уведомление, можно снова включить push-уведомление Apple для конкретного пользователя из приложения. 

  2. И если пользователь сначала принимает службу уведомлений Apple Push, а через несколько дней, если он не хочет получать уведомления, можно ли отключить APNS в нашем приложении? Я надеюсь, вы понимаете мои сомнения. Кто-нибудь может прояснить это сомнение?

  3. Можно ли сделать вышеописанные сценарии в нашем приложении для iPhone?

Пожалуйста, помогите мне. Заранее спасибо.

20
Gopinath

К сожалению, вы не можете включить или отключить Push-уведомления для вашего приложения из кода приложения. Диалог с запросом разрешения отображается только один раз. Обычно другие приложения отображают инструкции для пользователя, чтобы включить/отключить Push-уведомления, зайдя в Настройки-> Уведомление-> Имя приложения.

15
adig

Вы можете прочитать разрешения вашего приложения, используя UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];, а затем выполнить побитовое выполнение и операцию с различными типами, чтобы увидеть, какие из них включены. Вы также можете вызвать unregisterForRemoteNotifications, чтобы отключить уведомления. Единственное, что вы не можете сделать, это включить уведомления, хотя вы можете направить пользователя.

16
jrtc27

Мое требование состояло в том, чтобы включить и отключить pushnotificaton с помощью UISwitch. Inorder, чтобы включить Push-уведомление из кода использовать это внутри действия кнопки.

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
   (UIRemoteNotificationTypeBadge |  UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

Чтобы отключить

[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
4
arshad

Когда вы даете разрешение в первый раз, токен устройства вашего iPhone регистрируется на сервере APN, а затем вы можете получить Push-уведомление. Позже вы можете включить/отключить в настройках вашего устройства → уведомление → ваше приложение.

1
wasim

1. Из вашего приложения Нет, оно просто появляется в первый раз, когда пользователь открывает ваше приложение после его установки. Если затем он решит разрешить его, он может активироваться из настроек устройства.

2.Это можно сделать из приложения и настроек. Если вы хотите отключить его из своего приложения, вы можете отправить токен устройства (который решит отключить Push-уведомление) на свой сервер и сохранить его для ex. как «нет списка уведомлений», и при отправке полезной нагрузки вы игнорируете эти токены, чтобы они не получали уведомление.

3. Я уже отвечаю.

Удачи.

1
Malek_Jundi

Прагматически, можно включать и отключать Push-уведомления, регистрируя и отменяя регистрацию Push-уведомлений. 

Включить Push-уведомление:

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
}

Отключить push-уведомление:

UIApplication.shared.unregisterForRemoteNotifications()
0
Krunal

Вы можете использовать этот код для поддержки iOS 9

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {

    UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];

    if (types == UIUserNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
} else {

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
}

см. Как обновить код с помощью enabledRemoteNotificationTypes, потому что он «не поддерживается в iOS 8»?

0
debiasej