8
votes

IOS S'inscrire aux notifications push dans la demande

Q1. Dois-je le faire au début de mon application? Ou puis-je déclencher l'invite pour autoriser / ne pas autoriser à aucun moment de mon application?

Q2. Y a-t-il un moyen de savoir si l'utilisateur a cliqué sur Oui / Non? (rappel?)

Q3. Si l'utilisateur a déjà cliqué sur Non, (dans une session précédente), mon invite sera-t-il réellement incendié? Ou dois-je dire à l'utilisateur d'aller dans leurs paramètres de téléphone et d'y permettre là-bas?

La raison en cours est que j'ai une application qui a une section à l'intérieur de celle-ci appelée "Notifications", dans laquelle ils peuvent activer / désactiver de recevoir des notifications sur certaines choses, je ne veux donc que les inviter à activer, etc. Quand ils sont dans cette section Pas au début de l'application.


1 commentaires

Dans iOS 10 Si vous utilisez le USERERNOTIFICATIONS Framework Ensuite, vous pouvez savoir si l'utilisateur a cliqué sur Oui / Non à l'aide d'un rappel. Voir ici


4 Réponses :


22
votes

A1: Non, il n'est pas nécessaire d'être au début de l'application. Vous pouvez invoquer registerforremotenotificationTypes de n'importe où dans le code.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    NSDictionary *apsInfo = [userInfo objectForKey:@"apsinfo"]; // This appsInfo set by your server while sending push

    NSString *alert = [apsInfo objectForKey:@"alert"];

    UIApplicationState state = [application applicationState];

    if (state == UIApplicationStateActive) {
        application.applicationIconBadgeNumber = 0;

        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

        UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"Push Notification"
                                                            message:alert
                                                           delegate:self
                                                  cancelButtonTitle:@"NO"
                                                  otherButtonTitles:@"YES"];
        [alertview show];
        [alertview release];

    } else {
        [self setTabs:contentsInfo];
     }
}


- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (buttonIndex != [alertView cancelButtonIndex]) {
     // User pressed YES, do your stuffs
     }
}


3 commentaires

Si l'utilisateur rejette pour recevoir une notification push ou désactiver la notification push à partir des paramètres, comment pouvons-nous gérer le cas d'invite à nouveau l'utilisateur? .Je.e., Comment savoir que l'utilisateur n'est pas enregistré pour la poussée et lui donner une invite?


Cette réponse (et probablement d'autres réponses) est partiellement obsolète . Il s'applique uniquement à iOS <7. Dans iOS789, vous deviez faire un [Application registerforremotenotifications] distinct comme cela vous permettrait de vous accéder au jeton (quelque chose que vous pouvez faire sans la permission de l'utilisateur; la permission n'est requise que si vous souhaitez donner une alerte / un badge , son de l'utilisateur). Dans iOS 10, il existe un nouveau cadre nommé usernotifications qui vous permettra de déterminer si l'utilisateur autorisait l'accès ou non. Voir ici pour plus d'informations sur iOS 10 (1/2)


Dans les versions précédentes, vous avez dû [application isregisteredforremotenotifications] pour voir si vous êtes inscrit ou non (2/2)



5
votes
  • Q1 Il n'est pas nécessaire de mettre un registre de poussée au lancement de l'application, mais certains font Mettez-le dans Application: DidfinishlaunchingwithOptions: en quelque sorte Assurez-vous que le jeton de périphérique est stocké avec succès sur le serveur de développeur.
  • Q2 Quel est le "oui / non" pour ici? Si vous voulez dire "oui / non" sur "si recevoir une notification push ", puis si l'utilisateur a cliqué sur" Oui ", le Délégué Application: DidregisterforremotenotificationsWithDeviceSToken sera déclenché, sinon pas.
  • q3 si l'utilisateur cliquez sur "Non" pour rejeter la notification de la réception, puis soit vous pouvez plus tard lui rappeler de le transformer dans des paramètres, ou d'avoir un fonction, comme une chose d'Uiswitch, pour permettre aux utilisateurs de déclencher [[uiapplication SharedApplication] registerforremotenotificationTypes: (UiremotenotificationTypealert | UIRIMOTENOTIFICATIONTTYPEBADGEGADGE | UIRMOTENOTIFICATIONTYPESUNED)]; encore.

0 commentaires

5
votes

Vous pouvez utiliser le didacticiel suivant pour SWIFT ( Visiter le lien ) et utilisez le code simple suivant pour l'objectif-c pour Apple Push Notification. xxx


1 commentaires

Nous pouvons également sauter d'autre partie IOS <8 notifications .. comme maintenant quelques jours, nous allons iOS 8 et en haut ... Mohammad Good Obj Code.



0
votes

Réponse pour la question: 2 dans iOS 10. strong>

dans l'IOS: 10, un gestionnaire d'achèvement est mis en œuvre. Par conséquent, vous serez notifié immédiatement dans le bloc de gestionnaire d'achèvement. P>

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.f){
    UNUserNotificationCenter* notificationCenter = [UNUserNotificationCenter currentNotificationCenter];
    [notificationCenter requestAuthorizationWithOptions:UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge completionHandler:^(BOOL granted, NSError * _Nullable error) {
        NSLog(@"grant Access:%d",granted);
    }];


0 commentaires