从FCM直接渠道获取FCM令牌

时间:2019-10-15 16:47:18

标签: ios objective-c cocoa-touch firebase-cloud-messaging

我正在开发可可接触框架(使用目标c)来处理来自FCM的通知。查看文档,我发现有一种方法可以使用FIRMessaging delegate并将shouldEstablishDirectChannel属性设置为YES,在FCM和IOS应用程序之间建立直接通道(绕过APNS)。为了获得FIRMessaging的实例,有一个类方法; messaging。我的疑问是,如果我在框架内创建该类的实例(使用messaging方法)(我做其他事情,例如设置用于处理接收消息的令牌的委托)。

  1. 我怎样才能使该实例保持活动状态以便继续接收 来自FCM的消息?
  2. 在任何时间都不会销毁它,我会停下来 从FCM接收消息?

我在框架内部的类的Class方法中拥有这段代码。在从NSObject覆盖的+ load上调用此方法。根据Apple文档,当将类添加到目标C运行时时,将执行哪个操作。

FIRMessaging *firmessaging = [FIRMessaging messaging];

FCMDelegate * delegateObject = [[FCMDelegate alloc] init];

firmessaging.shouldEstablishDirectChannel = YES;

firmessaging.delegate = delegateObject;

delegateObject符合FIRMessagingDelegate协议,因此它实现了didReceiveRegistrationTokendidReceiveRemoteMessage

我在didReceiveRegistrationToken里面:

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString * defaultToken = [defaults objectForKey:@"token"];

if(defaultToken == nil)
{

    [defaults setObject:fcmToken forKey:@"token"];

}

}

我的问题是我没有从FCM收到令牌。

0 个答案:

没有答案