0

J'essaie d'implémenter la notification push en utilisant la messagerie cloud Firebase.J'ai suivi le tutoriel officiel de firebase de https://firebase.google.com/docs/cloud-messaging/ios/client Il fonctionne en simulateur et j'obtiens le message que j'ai envoyé depuis firebase console, mais il ne reçoit pas le jeton InstanceID (jeton FCM) lorsque j'essaie de le créer dans un périphérique.Le message Firebase Cloud fonctionne dans le simulateur mais ne fonctionne pas sur le périphérique IOS

Voici mon code AppDelegate

debugging environment : IOS 10.3 
//---------------PUSH NOTIFICATION IMPLEMENTED HERE------------------ 

- (BOOL)application: (UIApplication*)application 
didFinishLaunchingWithOptions: (NSDictionary*)launchOptions 
{ 
// Register for remote notifications. This shows a permission dialog on first run, to 
// show the dialog at a more appropriate time move this registration accordingly. 
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) { 
    // iOS 7.1 or earlier. Disable the deprecation warnings. 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 
    UIRemoteNotificationType allNotificationTypes = 
    (UIRemoteNotificationTypeSound | 
    UIRemoteNotificationTypeAlert | 
    UIRemoteNotificationTypeBadge); 
    [application registerForRemoteNotificationTypes:allNotificationTypes]; 
    #pragma clang diagnostic pop 
} else { 
    // iOS 8 or later 
    // [START register_for_notifications] 
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9_x_Max) { 
     UIUserNotificationType allNotificationTypes = 
     (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge); 
     UIUserNotificationSettings *settings = 
     [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil]; 
     [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
    } else { 
     // iOS 10 or later 
#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 
__IPHONE_10_0 
     // For iOS 10 display notification (sent via APNS) 
     [UNUserNotificationCenter currentNotificationCenter].delegate = self; 
     UNAuthorizationOptions authOptions = 
     UNAuthorizationOptionAlert 
     | UNAuthorizationOptionSound 
     | UNAuthorizationOptionBadge; 
     [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { 
     }]; 

     // For iOS 10 data message (sent via FCM) 
     [FIRMessaging messaging].remoteMessageDelegate = self; 
#endif 
    } 

    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
    // [END register_for_notifications] 
} 

//[[UIApplication sharedApplication] registerForRemoteNotifications]; 
// [START configure_firebase] 
[FIRApp configure]; 
// [END configure_firebase] 
// [START add_token_refresh_observer] 
// Add observer for InstanceID token refresh callback. 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:) 
              name:kFIRInstanceIDTokenRefreshNotification object:nil]; 
// [END add_token_refresh_observer] 
return YES; 
} 

// [START receive_message] 
- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo { 
// If you are receiving a notification message while your app is in the background, 
// this callback will not be fired till the user taps on the notification launching the application. 
// TODO: Handle data of notification 

// Print message ID. 
if (userInfo[kGCMMessageIDKey]) { 
    NSLog(@"Message ID: %@", userInfo[kGCMMessageIDKey]); 
} 

// Print full message. 
NSLog(@"%@", userInfo); 
} 

- (void)application:(UIApplication *)application 
didReceiveRemoteNotification:(NSDictionary *)userInfo 
fetchCompletionHandler:(void (^) 
(UIBackgroundFetchResult))completionHandler { 
// If you are receiving a notification message while your app is in the background, 
// this callback will not be fired till the user taps on the notification launching the application. 
// TODO: Handle data of notification 

// Print message ID. 
if (userInfo[kGCMMessageIDKey]) { 
    NSLog(@"Message ID: %@", userInfo[kGCMMessageIDKey]); 
} 

// Print full message. 
NSLog(@"%@", userInfo); 

completionHandler(UIBackgroundFetchResultNewData); 
} 
// [END receive_message] 



// [START ios_10_message_handling] 
// Receive displayed notifications for iOS 10 devices. 
#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 
__IPHONE_10_0 
// Handle incoming notification messages while app is in the 
foreground. 
- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
    willPresentNotification:(UNNotification *)notification 
    withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { 
// Print message ID. 
NSDictionary *userInfo = notification.request.content.userInfo; 
if (userInfo[kGCMMessageIDKey]) { 
    NSLog(@"Message ID: %@", userInfo[kGCMMessageIDKey]); 
} 

// Print full message. 
NSLog(@"%@", userInfo); 
} 

// Handle notification messages after display notification is tapped by the user. 
- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
didReceiveNotificationResponse:(UNNotificationResponse *)response 
    withCompletionHandler:(void (^)())completionHandler { 
NSDictionary *userInfo = response.notification.request.content.userInfo; 
if (userInfo[kGCMMessageIDKey]) { 
    NSLog(@"Message ID: %@", userInfo[kGCMMessageIDKey]); 
} 

// Print full message. 
NSLog(@"%@", userInfo); 
    } 

#endif 
// [END ios_10_message_handling] 


// [START ios_10_data_message_handling] 
#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 
__IPHONE_10_0 
// Receive data message on iOS 10 devices while app is in the foreground. 
- (void)applicationReceivedRemoteMessage:(FIRMessagingRemoteMessage *)remoteMessage { 
// Print full message 
NSLog(@"%@", [remoteMessage appData]); 
} 
#endif 
// [END ios_10_data_message_handling] 

// [START refresh_token] 
- (void)tokenRefreshNotification:(NSNotification *)notification { 
// Note that this callback will be fired everytime a new token is generated, including the first 
// time. So if you need to retrieve the token as soon as it is available this is where that 
// should be done. 
NSString *refreshedToken = [[FIRInstanceID instanceID] token]; 
NSLog(@"InstanceID token: %@", refreshedToken); 

// Connect to FCM since connection may have failed when attempted before having a token. 
[self connectToFcm]; 

// TODO: If necessary send token to application server. 
} 
// [END refresh_token] 

// [START connect_to_fcm] 
- (void)connectToFcm { 
[[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) { 
    if (error != nil) { 
     NSLog(@"Unable to connect to FCM. %@", error); 
    } else { 
     NSLog(@"Connected to FCM."); 
    } 
}]; 
    } 
// [END connect_to_fcm] 


- (void)application:(UIApplication *)application 
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 
NSLog(@"Unable to register for remote notifications: %@", error); 
    } 

    // This function is added here only for debugging purposes, and can 
    be removed if swizzling is enabled. 
// If swizzling is disabled then this function must be implemented so 
    that the APNs token can be paired to 
// the InstanceID token. 
- (void)application:(UIApplication *)application 
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
NSLog(@"APNs token retrieved: %@", deviceToken); 

// With swizzling disabled you must set the APNs token here. 
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 
    } 

Comment puis-je montrer notification.please aider

Merci à l'avance

Répondre

0

Il n'y a rien à change.I mettre un message de console firebase pour plus tard livraison et cela fonctionne parfaitement. temps de la console et mon décalage de temps de l'iphone c'est pourquoi il n'a pas envoyé le message immédiatement.