4

iPhoneで通知が有効になっていることを確認するにはどうすればよいですか? 私はアプリケーションをインストールします。アプリケーションは、アプリケーションのプッシュ通知を有効にすることを確認するために、「OK」をクリックします。しかし、iPhoneで通知が無効になっている場合、このアクションでは通知は有効になりません。 これを確認するには?iPhoneで通知が有効になっていることを確認する方法

答えて

8

これは動作するはずです:これはiOS8に変更

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
if (types == UIRemoteNotificationTypeNone) 
    // Disabled 
3

。 iOS8とそれ以下の両方をサポートするには

+ (BOOL)notificationServicesEnabled { 
    BOOL isEnabled = NO; 

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]){ 
     UIUserNotificationSettings *notificationSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 

     if (!notificationSettings || (notificationSettings.types == UIUserNotificationTypeNone)) { 
      isEnabled = NO; 
     } else { 
      isEnabled = YES; 
     } 
    } else { 
     UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
     if (types & UIRemoteNotificationTypeAlert) { 
      isEnabled = YES; 
     } else{ 
      isEnabled = NO; 
     } 
    } 

    return isEnabled; 
} 
+0

これを 'AppDelegate'か' ViewController'に入れていますか? – SRMR

+1

シングルトンオブジェクトからデータを取得するので、このスニペットをどこにでも置くことができます。個人的に言えば、このコードを 'DeviceNotificationsManager'クラスに置きます。このクラスは、電話の通知サブシステムに関連するロジックをカプセル化します。そうすれば、外の世界(つまり、アプリケーションの残りの部分)は 'DeviceNotificationsManager'だけを参照するだけで、iOSの通知システムについて詳しく知る必要はありません。 –

+0

ちょっと@ ShaheenGhiassy、上記のスニペットが動作します。 if&else部分の論理を反転させる特別な理由はありますか? ifセクションではUIUserNotificationTypeNoneをチェックし、そうでなければUIRemoteNotificationTypeAlertをチェックします。 – iosCurator

関連する問題