未使用 firebase 和 Objective C 接收推送通知 [英] Not receiving Push Notifications Using firebase and Objective C

查看:35
本文介绍了未使用 firebase 和 Objective C 接收推送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Firebase 进行推送通知.我已经通过 Cocoapods 成功安装了 FirebaseFirebase 消息传递.

I am trying to use Firebase for push notification. i have successfully installed the Firebase And Firebase messaging via Cocoapods.

我使用了下面的代码

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [FIRApp configure];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshCallback:) name:kFIRInstanceIDTokenRefreshNotification object:nil];


    UIUserNotificationType allNotificationsType = (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);

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

    [application isRegisteredForRemoteNotifications];

    return YES;
}


 -(void)applicationDidEnterBackground:(UIApplication *)application {

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

- (void)applicationDidBecomeActive:(UIApplication *)application {
     [self connectToFirebase];
}

- (void) application:(UIApplication *) application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:( void (^)(UIBackgroundFetchResult))completionHandler{

    // Pring The Message Id
    NSLog(@"Mesage Id : %@",userInfo[@"gcm.message_id"]);

    // Print Full Message
    NSLog(@"%@",userInfo);
}

#pragma mark -- Custom Firebase code


- (void)tokenRefreshCallback:(NSNotification *) notification{
    NSString *refreshedToken = [[FIRInstanceID instanceID] token];
    NSLog(@"IstanceID token: %@", refreshedToken);

    // Connect To FCM since connection may have failed when attempt before having a token
    [self connectToFirebase];
}

-(void) connectToFirebase{

    [[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error)
     {
         if ( error != nil)
         {
             NSLog(@"Unable to Connect To FCM. %@",error);
         }
         else
         {
             NSLog((@"Connected To FCM"));
         }
     }];
}

当我使用与 Xcode 连接的 iPhone 运行上述代码时,当我从 Firebase 控制台发送消息时遇到以下问题

When i run the above code using my iPhone connected with Xcode i am facing the following issues when i send a message from Firebase Console

1).当应用程序处于前台(活动)时,日志显示以下消息

1). when the app is in foreground (active), Log shows the below message

Mesage Id : (null){
    CustommData = "First Message";
    "collapse_key" = "abcd.iospush.FireBasePush";
    from = 555551391562;
    notification =     {
        badge = 4;
        body = "Test Message";
        e = 1;
        sound = default;
        sound2 = default;
    };
}

注意 Message Idnull.

2).我的手机在通知中心中没有显示任何通知,无论应用程序处于前台、后台还是关闭状态

2). My phone doesn't show any notification in Notification Centre whether App is in Foreground , Background or Closed

我希望用户在应用处于后台、前台或关闭时接收推送通知

I want user to receive push notifications when App is in Background , Foreground or Closed

推荐答案

您必须调用 [[UIApplication sharedApplication] registerForRemoteNotifications]; 才能正确注册远程通知.

You must call [[UIApplication sharedApplication] registerForRemoteNotifications]; to properly register for remote notifications.

为后台使用配置远程通知

您是否已将应用的后台模式配置为接受远程通知?你可以通过点击:Project Name -> Capabilities -> Background Modes

Have you configured your app's background modes to accept remote notifications? You can do this by clicking: Project Name -> Capabilities -> Background Modes

打开它,然后勾选远程通知旁边的框,如下面的屏幕截图所示.

Turn this on and then tick the box beside Remote Notifications as seen in the screenshot below.

这篇关于未使用 firebase 和 Objective C 接收推送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆