1

通知センターの状態が「ON」か「OFF」か知りたいです。

私が知っているように、誰もがそれを有効にするために

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

しかし、「ON」または「OFF」状態のいずれかの状態を取得する必要があります。

ここに画像の説明を入力

Googleで検索した結果は次のとおりです。

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone)
{
}

if (launchOptions != nil)
    {
        NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (dictionary != nil)
        {
            NSLog(@"Launched from push notification: %@", dictionary);

            [self clearNotifications];
        }
    }

if (notificationTypes == UIRemoteNotificationTypeNone) {
    // Do what ever you need to here when notifications are disabled
} else if (notificationTypes == UIRemoteNotificationTypeBadge) {
    // Badge only
} else if (notificationTypes == UIRemoteNotificationTypeAlert) {
    // Alert only
} else if (notificationTypes == UIRemoteNotificationTypeSound) {
    // Sound only
} else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)) {
    // Badge & Alert
} else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)) {
    // Badge & Sound        
} else if (notificationTypes == (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)) {
    // Alert & Sound
} else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)) {
    // Badge, Alert & Sound     
}

しかし、ios5とios6の両方で結果が得られませんでした

ガイドしてください

前もって感謝します

4

1 に答える 1

2

ユーザーが特定の方法で通知を有効にしていない場合に常に把握できるようにするために、2 つのことを組み合わせることができます。

AppDelegate で didRegisterForRemoteNotificationsWithDeviceToken と didFailToRegisterForRemoteNotificationsWithError の両方を処理する必要があります。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    if (!([[UIApplication sharedApplication] enabledRemoteNotificationTypes] & UIRemoteNotificationTypeAlert) || !([[UIApplication sharedApplication] enabledRemoteNotificationTypes] & UIRemoteNotificationTypeBadge)) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Notice" message:@"You do not have the recommended notification settings enabled for this app."   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
    }
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Notice" message:@"Your device does not currently have notifications enabled."   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}

参考までに: これは常にシミュレーターでトリガーされるため、デバイスでテストするまでコメントアウトすることをお勧めします。

于 2012-12-01T21:36:35.810 に答える