2

Ich habe versucht, Firebase Push-Benachrichtigung in meiner iOS-App für eine lange Zeit zu erhalten. Ich habe alles im Internet versucht, das ich finden konnte. Aber leider kein Glück. Jede Hilfe wäre willkommen.FCM Benachrichtigung nicht in iOS erhalten

Ich sende Benachrichtigung über Firebase-Konsole.

und hier ist mein Code:

#import "AppDelegate.h" 

#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 
@import UserNotifications; 
#endif 

@import Firebase; 
@import FirebaseInstanceID; 
@import FirebaseMessaging; 

#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 
@interface AppDelegate() <UNUserNotificationCenterDelegate, FIRMessagingDelegate> 
@end 
#endif 

@implementation AppDelegate 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 

    // [START configure_firebase] 
    [FIRApp configure]; 
    // [END configure_firebase] 

    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 
     UNAuthorizationOptions authOptions = 
     UNAuthorizationOptionAlert 
     | UNAuthorizationOptionSound 
     | UNAuthorizationOptionBadge; 
     [[UNUserNotificationCenter currentNotificationCenter] 
     requestAuthorizationWithOptions:authOptions 
     completionHandler:^(BOOL granted, NSError * _Nullable error) { 
     } 
     ]; 

     // For iOS 10 display notification (sent via APNS) 
     [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; 
     // For iOS 10 data message (sent via FCM) 
     [[FIRMessaging messaging] setRemoteMessageDelegate:self]; 
#endif 
    } 

    [[UIApplication sharedApplication] registerForRemoteNotifications]; 

    // Add observer for InstanceID token refresh callback. 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:) 
               name:kFIRInstanceIDTokenRefreshNotification object:nil]; 

    return YES; 
} 

// [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); 

    NSLog(@"id = ---------- %@",[[[UIDevice currentDevice] identifierForVendor] UUIDString]); 


    [[NSNotificationCenter defaultCenter] postNotificationName:@"fcmtoken" object: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] 

- (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. 
    NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]); 

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

// [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 
- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
     willPresentNotification:(UNNotification *)notification 
     withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { 
    // Print message ID. 
    NSDictionary *userInfo = notification.request.content.userInfo; 
    NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]); 

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

// Receive data message on iOS 10 devices. 
- (void)applicationReceivedRemoteMessage:(FIRMessagingRemoteMessage *)remoteMessage { 
    // Print full message 
    NSLog(@"message Recived = %@", [remoteMessage appData]); 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ROFL" 
                message:@"Dee dee doo doo." 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 

} 
#endif 

// [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 didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken"); 
    // for development 
    [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 

    // for production 
    //  [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd]; 


} 

- (void)applicationWillResignActive:(UIApplication *)application { 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 
} 

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 

    //[[FIRMessaging messaging] disconnect]; 
    // NSLog(@"Disconnected from FCM"); 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 
} 

- (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. 

    [self connectToFcm]; 
} 

- (void)applicationWillTerminate:(UIApplication *)application { 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 

@end 

Im Protokoll ich in der Lage bin, um zu sehen Token für das Gerät erzeugt wird, auch wenn ich abschicken App-Token ist keine Benachrichtigung erhalten, wenn es im Hintergrund ist.

Aber wenn ich meine App starte, ruft es applicationReceivedRemoteMessage: an und ich kann zerstreute Warnung sehen.

Was könnte das Problem sein bitte helfen und danke im Voraus!

+0

in Ihrer Nutzlast Set Priorität auf hoche –

+0

getestet, aber immer noch hilft nicht :( – Krunal

+0

Ihre Nutzlast posten –

Antwort

0

Wenn Ihre APP Hintergrund eingeben wird die Benachrichtigung von Apple APNS-Service gesendet, so denke ich, dass Ihre .cer falsch ist; Apple hat zwei .cer, um Benachrichtigungen in coding/AppStore zu pushen, wenn Ihre App nicht in den AppStore geht, versuchen Sie, development.cer zu verwenden.

Mein Englisch ist schlecht, kann aber hilfreich für Sie sein!

==== bearbeiten ==== versuchen Sie das?

NSString *pushToken = [[[[deviceToken description]

      stringByReplacingOccurrencesOfString:@"<" withString:@""] 
         stringByReplacingOccurrencesOfString:@">" withString:@""] 
         stringByReplacingOccurrencesOfString:@" " withString:@""]; 
+0

Ich habe Entwicklung cer verwendet und zu meinem Provisioning-Profil. – Krunal

+0

@Krunal neen‘ t senden .p12 zu Firebase? – darkThanBlack

+0

uploaded .p12 zu Firebase zu – Krunal

0

Sorry für Frage possting aber es könnte jemand helfen ... ich dieses Problem beheben, indem ermöglicht Push-Benachrichtigung Fähigkeit in Xcode 8.1

Klicken Sie auf Xcodeproj -> Funktionen -> Aktivieren Push-Benachrichtigung

und ich habe Provisionsprofil erstellt.

3

Der Grund, dies zu meinem Projekt passiert ist, weil ich das gleiche Gerät Token erzeugt mit meiner Entwicklung db bin mit ... stellt sich heraus, ich müssen die App auf meinem Handy löschen und neu zu installieren und registrieren, zur Meldung Holen Sie sich neue Geräte-Token und generieren Sie neue FCM Registrierungs-ID .. das funktioniert und ich habe meine Benachrichtigungen erfolgreich erhalten.

Hoffe, das hilft.

+0

hast du mein Leben gerettet – Edmund

Verwandte Themen