2017-02-12 1 views
0

d'autorisation À un contrôleur de vue Je message pop-up Réglage de l'avisComment gérer le choix des utilisateurs des paramètres de notification d'alerte

My app aimerait à vous envoyer des notifications qui peuvent inclure des alertes, des sons et des badges icône. Ceux-ci peuvent être configurés dans les paramètres

Comment gérer Don't Allow et Allow boutons du message?

Si robinet d'utilisateur sur Allow je dois changer le texte de l'étiquette dans la même vue contrôleur

Répondre

1

Je suppose que quelque part dans votre application, vous avez du code comme ça:

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:... categories:...]; 
[application registerUserNotificationSettings:settings]; 

Après avoir fait cela, le système montrer l'alerte à propos de laquelle vous parlez. À ce moment, l'application recevra UIApplicationWillResignActiveNotification (vous pouvez vous inscrire pour ce délégué dans l'application ou par NSNotificationCenter). Ensuite, après que l'utilisateur fera un certain choix, le système enverra UIApplicationDidBecomeActiveNotification (également dans le délégué de l'application ou par notification). À ce moment, vérifier les autorisations en utilisant le code comme ça:

UIUserNotificationSettings *settings = application.currentUserNotificationSettings; 
if (settings.types & UIUserNotificationTypeSound & UIUserNotificationTypeBadge) { 
    // sound and icon badge allowed 
} 
else { 
    // either sound or icon badge or both disallowed 
} 
1

La réponse ci-dessous est résolu le problème.

Lorsque le message contextuel au niveau du système visible le applcation appellera resignActivity lorsque vous cliquez sur « Autoriser » et « Ne laissez pas les » bouton d'alerte vous message d'alerte rejeté et il appellera applicationDidBecomeActive dans votre classe AppDelegate lors de l'enregistrement avec NSNotificationCenter peut en mesure de modifier le texte lorsque l'utilisateur est immédiatement.

- (void)applicationDidBecomeActive:(UIApplication *)application { 
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION_KEY" 
                  object:self]; 
    }); 
}