2012-09-09 4 views
5

私はenableremotenotificationtypesを認識していますが、それは役に立ちません。ユーザーが1.プッシュ通知を受け入れるかどうかを知らせてください。その後、プッシュ通知を無効にします。または、2.プッシュ通知を拒否します。または3.許可を求める青いダイアログが表示されませんでした。これらの3つのケースを区別する方法が必要です。ユーザがプッシュ通知の許可(ios)を求めるダイアログを見たことがあるかどうかを確認するには

本当にありがとうございます。

+0

を:限り、カテゴリ数が0よりも大きいと、あなたは通知許可ダイアログが表示されていることを確実に知ることができます答えが見つかります。 –

+1

あなたは詳しく教えていただけますか? – user1657624

+2

は、developer.apple.comにアクセスしてください。 iOS 6ベータ版のページに移動します。チェンジログを読んでください。私はライセンス契約のためにここで詳述することはできません。 –

答えて

-3

これは私がこのような状況に対処する方法です - 私は初心者の何かですので、これは最適ではない可能性がありますが、それは私のために働きます。 intプロパティpushNotificationSeenを作成します。ユーザーがダイアログを表示して拒否した場合は、pushNotificationSeenを1に設定します。ユーザーがダイアログを表示してそれを受け入れる場合は、pushNotificationSeenを2に設定します。次に、コードの次の行でコードの他の場所):

-(void)saveData 
{ 
if (self.pushNotificationSeen) 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:self.pushNotificationSeen forKey:@"seen?"]; 
    [defaults synchronize]; 
} 
} 

次に、次の行をviewDidLoadに追加します。

この時点で
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
self.pushNotificationSeen = [defaults integerForKey:@"seen?"]; 

、ユーザーが持っているかself.pushNotificationSeenが0であるかどうかをチェックすることによって行われていない、1かを把握することができ、または2

私は、これは十分な情報であると思います - 私はあまり寝ないで走っています。私が混乱しているなら、私に知らせてください。私は明確にすることができます。

+0

問題は:どのようにプッシュ通知が見られているかを知るには? – Marty

+0

ユーザーに許可が与えられているかどうかはどのように分かりますか? – Andy

1

解決策は少しハックですが、機能します。

//Request notification permission 
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 

//Request notification permission again, but with a category with no actions 
UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc] init]; 
category.identifier = @"com.xyz.markNotificationPopupShownCategoryIdentifier"; 

UIUserNotificationSettings *notificationSettingsWithCategory = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:[NSSet setWithObject:category]]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettingsWithCategory]; 

didRegisterUserNotificationSettings:(UIUserNotificationSettings *)アプリデリゲートでnotificationSettingsメソッドが2回呼び出されます、と関係なくnotificationCategoryのないものとnotificationCategoryと1 - あなたは二つの異なるnotificationSettingsためregisterUserNotificationSettingsを呼び出す必要があります2番目の呼び出しの後、許可通知のユーザーの回答、現在の通知設定にはカテゴリが含まれます。あなたはiOSの開発用証明書を持っている場合、私はあなたを考えるのiOS 6の変更履歴をご覧ください

if ([UIApplication sharedApplication].currentUserNotificationSettings.categories.count > 0) { 
    NSLog(@"Notifications permissions has been asked"); 
} else { 
    NSLog(@"Notifications permissions hasn't been asked"); 
} 
+0

ダイアログが表示されなくても、私のために1を返します –

関連する問題