21

にもう1つ疑問がありAPNSます。これは、アプリが最初に起動したときに、ユーザーが通知を受信できることに同意した場合、アプリがAppleプッシュ通知の許可を要求するときです。ユーザーがキャンセルした場合、通知を受け取ることはできません。私の言いたいことが分かりますか??

今私の疑問は、

  1. 数日後にユーザーがアプリからのプッシュ通知サービスを再度キャンセルした場合(Cancelボタンをクリック)、Appleプッシュ通知を受信したい場合は、アプリから特定のユーザーに対してAppleプッシュ通知を再度有効にすることができます。

  2. そして、ユーザーが最初にアップルプッシュ通知サービスを受け入れ、数日後に通知を受け取りたくない場合はAPNS、アプリでを無効にすることができますか?私の疑問をご理解いただければ幸いです。誰かがこの疑問を明確にできますか?

  3. 私たちのiPhoneアプリでこれらの上記のシナリオを行うことは可能ですか?

私を助けてください。前もって感謝します。

4

7 に答える 7

16

UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];さまざまなタイプを使用してビット単位の操作を実行してからアプリの権限を読み取り、どれが有効になっているかを確認できます。unregisterForRemoteNotifications呼び出して通知を無効にすることもできます。ユーザーに指示することはできますが、通知をオンにすることはできません。

于 2012-05-08T07:14:33.530 に答える
15

残念ながら、アプリコードからアプリのプッシュ通知を有効または無効にすることはできません。許可を求めるダイアログは1回だけ表示されます。通常、他のアプリは、[設定]->[通知]->[AppName]に移動して、プッシュ通知を有効/無効にするための指示をユーザーに表示します。

于 2012-05-08T06:54:00.967 に答える
5

私の要件は、プッシュ通知を有効または無効にすることでした。コードからのプッシュ通知UISwitchを有効にするには、ボタンアクション内でこれを使用します。

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

無効にするために

[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
于 2014-06-27T11:58:02.093 に答える
1

iPhoneのデバイストークンがAPNサーバーに初めて登録されたときに許可を与えると、プッシュ通知を受け取ることができます。後で、デバイス設定→通知→アプリから有効/無効にすることができます。

于 2012-08-29T09:10:18.117 に答える
1

1.アプリからいいえ、ユーザーがアプリをインストールした後に初めてアプリを開いたときに表示されます。その場合、ユーザーはデバイス設定からアクティブ化できるようにすることを決定します。

2.アプリと設定から実行できます..アプリから無効にする場合は、デバイストークン(プッシュ通知を無効にすることを決定した)をサーバーに送信して、たとえば保存することができます。「通知リストなし」として、ペイロードを送信するとき、これらのトークンを無視して、通知を受け取らないようにします。

3.私はすでにそれに答えます。

幸運を。

于 2012-05-08T06:58:42.430 に答える
0

このコードを使用して、iOS9でサポートを提供できます

    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(@"");
    }
}

「iOS8ではサポートされていない」ため、enabledRemoteNotificationTypesを使用してコードを更新する方法を参照してください。

于 2015-12-17T08:48:51.543 に答える
0

実用的には、プッシュ通知を登録および登録解除することにより、プッシュ通知を有効または無効にすることができます。

プッシュ通知を有効にする:

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()
于 2017-06-24T05:48:23.113 に答える