Подтвердить что ты не робот

Включить/отключить уведомление Apple Push от приложения iPhone?

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Удачи.

Ответ 5

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

Ответ 6

Вы можете использовать этот код для поддержки в 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" ,

Ответ 7

Прагматично можно включить и отключить push-уведомление, зарегистрировав и отменив push-уведомление.

Включить Push Notification:

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 Notification:

UIApplication.shared.unregisterForRemoteNotifications()