web-dev-qa-db-ja.com

iOSでのプッシュ通知のオンまたはオフのチェック

アプリケーションが実行されている(または再開モードからオンになっている)場合はいつでも、iOSデバイスの「プッシュ通知オプション」をチェックしたい。次のコードを使用して、オプションがオフかどうかを確認します。

-(void)PushNotificationServiceChecking
{
    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone)
    {
        NSString *msg = @"Please press ON to enable Push Notification";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"ON", nil];
        alert.tag = 2;
        [alert show];
    }
}

次に、[設定]タブ>> [通知センター]に移動するために次のコードを使用します。これにより、ユーザーは手動で設定できます。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 2)
    {
        if (buttonIndex == 0)
        {
            // this is the cancel button
        }
        else if (buttonIndex == 1)
        {
            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];
        }
    }

}

しかし、今私が直面している問題は、アプリケーションを起動してから初めて表示される問題です。思い通りに機能します。しかし、その後、「設定」から「プッシュ通知オプション」をオフにすると、「アラートメッセージ」は表示されません。

21
Tulon

アプリがregisterForRemoteNotificationに登録された場合、無効にすることも有効にすることもできます。無効にして再登録しようとすると、registerForRemoteNotificationが有効になり、警告のポップアップは表示されません。

テクニカルノートTN2265:プッシュ通知のトラブルシューティング

プッシュ対応アプリがプッシュ通知に初めて登録するとき、iOSはユーザーにそのアプリの通知を受信するかどうかを尋ねます。ユーザーがこのアラートに応答すると、デバイスが復元されるか、アプリが少なくとも1日アンインストールされない限り、再度表示されません。

アプリの初回実行をシミュレートする場合は、アプリを1日アンインストールしたままにしておくことができます。システムクロックを1日以上進め、デバイスの電源を完全にオフにしてから再びオンにすることで、実際に1日待つことなく後者を実現できます。

Fore More Info: [〜#〜] info [〜#〜] && Info 2

Editchecking with alert enable-

使用する

 if (types & UIRemoteNotificationTypeAlert){} 

の代わりに

if (types == UIRemoteNotificationTypeNone){}

編集:iOS 8以降のドキュメント からの最新のアップデート:

- (BOOL)isRegisteredForRemoteNotifications
21
Kumar KL

IOS 8では、以下を使用できます。

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

また、設定がどのようにセットアップされているかを確認するには、次のようにします。

[[UIApplication sharedApplication] currentUserNotificationSettings];
41
thijsai

それは私のために働いています。このヘルプを願っています! :D

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)


if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")){
    UIUserNotificationType type = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
    if (type == UIUserNotificationTypeNone){
        ALERT_WITH_TITLE(@"", kMessageNotificationTurnOnRequire);
    }
}
else {
   UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
   if (types == UIRemoteNotificationTypeNone) {
       ALERT_WITH_TITLE(@"", kMessageNotificationTurnOnRequire);
   }
}
8
777Q
NSString *iOSversion = [[UIDevice currentDevice] systemVersion];
NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject];
float versionVal = [prefix floatValue];

if (versionVal >= 8)
{
    if ([[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone)
    {
        NSLog(@" Push Notification ON");
    }
    else
    {
        NSString *msg = @"Please press ON to enable Push Notification";
        UIAlertView *alert_Push = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Setting", nil];
        alert_Push.tag = 2;
        [alert_Push show];

        NSLog(@" Push Notification OFF");
    }
}
else
{
    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
    if (types != UIRemoteNotificationTypeNone)
    {
        NSLog(@" Push Notification ON");
    }
    else
    {
        NSString *msg = @"Please press ON to enable Push Notification";
        UIAlertView *alert_Push = [[UIAlertView alloc] initWithTitle:@"Push Notification Service Disable" message:msg delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Setting", nil];
        alert_Push.tag = 2;
        [alert_Push show];

        NSLog(@" Push Notification OFF");
    }
}
4
Maulik Salvi