- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Firebase for iOS 上创建项目,成功安装 pods ,添加了 GoogleService-info.plist,
启用推送通知,将 Auth Key 添加到 firebase,将 $(inhertied) 添加到 Other C Flags
以及 PODS ROOTS
,添加了 APS 环境和钥匙串(keychain)访问组的权利,
向委托(delegate)添加了以下实现:
#import <Firebase/Firebase.h>
#import <FirebaseInstanceID/FirebaseInstanceID.h>
#import <FirebaseMessaging/FirebaseMessaging.h>
@implementation AppDelegate
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
#endif
// Copied from Apple's header in case it is missing in some cases (e.g. pre-Xcode 8 builds).
#ifndef NSFoundationVersionNumber_iOS_9_x_Max
#define NSFoundationVersionNumber_iOS_9_x_Max 1299
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.applicationIconBadgeNumber = 0;
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
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9_x_Max) {
UIUserNotificationType allNotificationTypes =
(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
UIUserNotificationSettings *settings =
[UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
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];
[[UIApplication sharedApplication] registerForRemoteNotifications];
#endif
}
}
[FIRApp configure];
// Add observer for InstanceID token refresh callback.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:)
name:kFIRInstanceIDTokenRefreshNotification object:nil];
[self removeScreen];
[window makeKeyAndVisible];
return YES;
}
// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[[FIRMessaging messaging] setAPNSToken: deviceToken type: FIRMessagingAPNSTokenTypeProd];
NSString *tokenString = [deviceToken description];
tokenString = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
tokenId = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
self.devToken = tokenId;
[self connectToFcm];
}
- (void)tokenRefreshNotification:(NSNotification *)notification {
[self connectToFcm];
}
- (void)connectToFcm {
[[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Unable to connect to FCM. %@", error);
} else {
NSLog(@"Connected to FCM.");
}
}];
}
当我运行代码时,出现以下错误:
由于未捕获的异常 'NSInvalidArgumentException',终止应用程序,原因:'-[FIRMessaging connectWithCompletion:]: 无法识别的选择器发送到实例 0x280bc0c00'
您知道可能导致错误的原因以及如何解决吗?
最佳答案
按照@Eysner 提供的: https://firebase.google.com/docs/cloud-messaging/ios/client
我替换了下面的代码:
- (void)connectToFcm {
[[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Unable to connect to FCM. %@", error);
} else {
NSLog(@"Connected to FCM.");
}
}];
}
使用以下代码:
- (void)connectToFcm {
[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result, NSError * _Nullable error{
if (error != nil) {
NSLog(@"Error fetching remote instance ID: %@", error);
}
else {
NSLog(@"Remote instance ID token: %@", result.token);
NSString* message = [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
}
}];
}
关于ios - NSInvalidArgumentException FIRMessaging connectWithCompletion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59875187/
我想将 Firebase 云消息传递与我的应用程序集成,但是当我运行该应用程序时,出现以下错误: FIRMessaging registration is not ready with auth c
我尝试添加 FIRMessagingDelegate 但 Xcode 给出错误 Cannot find protocol declaration for FIRMessagingDelegate. 我
我正在使用英特尔multi-os-engine构建我的 iOS 应用程序。尝试设置 Firebase Messaging 时出现以下错误: * Assertion failure in -FIRMes
我在这里搜索了一些其他问题/解决方案,但无法在我的应用程序中解决此问题。我不知道是什么问题。它工作正常。 当我在实际设备或模拟器上运行我的应用程序时,它会在初始屏幕上崩溃。这是崩溃日志。 *** Te
在 Firebase for iOS 上创建项目,成功安装 pods ,添加了 GoogleService-info.plist, 启用推送通知,将 Auth Key 添加到 firebase,将 $
我想知道如何在用户注册为我的应用程序用户之后而不是在用户打开我的应用程序时用众所周知的“应用程序”想向您发送推送通知来提示用户默认应用程序(甚至不是用户)。 我该怎么做?我以为你只会在 appDele
我正在使用 Firebase Messaging 为我的内部项目开发一个 Pod。我想将 FIRMessaging 和 FIRInstanceID 与另一个 FIRApp 一起使用,就像我可以使用 F
在我的 iOS Swift 应用程序中集成 Firebase Notification 新 API 时,我遇到了一个奇怪的问题。我在接收从 Firebase 网络平台发送的推送通知时遇到了一些困难。我
我正在使用一些 Swift 和 FCM 代码,更新 pod 后出现两个错误。我已经进行了研究,但不知道如何解决它。 这是代码: // For iOS 10 display notification (
我目前正在我的新项目中使用推送通知,因此我正在尝试生成推送 token 。我的问题是,这些什么时候到期?我将每个用户的推送 token 存储在我的 Firebase 数据库中,但我知道这些 token
有时,当我调用 [[FIRMessaging messaging] subscribeToTopic:myTopic](或取消订阅)时,我会在控制台中看到错误记录。有时他们有错误代码,有时只是这样的消
在使用 FCM tutorial for ios 实现 FCM 消息传递之后这是我在 appdelegate.m 中使用的代码 if (floor(NSFoundationVersionNu
我正在开发一个 ionic 应用程序,并且集成了 firebase 推送通知。在 Android 上一切正常,但在 iOS 上我在日志中收到以下错误。我也在 XCode 上启用了推送通知功能。知道为什
我正在尝试使用 Firebase 在我的应用程序中实现推送通知,但是在按照他们的文档进行操作时,我必须添加以下代码行: if #available(iOS 10.0, *) {
我无法在 iOS 中接收通知。我在 ionic 框架中编写了我的应用程序,显然 Firebase 不正式支持 ionic。关于如何解决问题的任何想法。 这是我已经完成的: 证书已在 apple dev
我是一名优秀的程序员,十分优秀!