'FIRInstanceID'的可见@interface没有声明选择器'setAPNSToken:type:'

时间:2018-10-31 07:53:11

标签: ios firebase firebase-cloud-messaging

更新Pod库后,在appdelegate.m中出现上述错误

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {

    [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];
    NSString *newToken = [deviceToken description];
    newToken = [newToken stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    newToken = [newToken stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"My token is: %@", newToken);

}

3 个答案:

答案 0 :(得分:4)

这是不推荐使用的代码,您应该尝试使用FIRMessaging

您可以将代码更新为如下形式

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

有关更多详细信息,请参见here

答案 1 :(得分:0)

替代解决方案: 最新的Firebase版本(v6)可能存在问题。在Podfile中更改Firebase版本。 将以下行添加到Podfile

pod 'Firebase/Core', '~>5.20.2'

然后运行pod update

这可以帮助我解决问题

答案 2 :(得分:0)

您的firebase_messaging中可能有旧版本的pubspec.yaml。确保您拥有latest version。如果这样做没有帮助,请转到ios文件夹(cd ios/),然后依次运行pod updateflutter clean。然后,再次运行您的应用程序。