具有推送通知功能的 React Native 应用程序在启动时崩溃
React Native application with Push notification capability crashes on start
我正在尝试通过 react-native-fcm
接收推送通知。正如文档所说,我安装并实施了以下所有步骤
a) 安装 react-native-fcm npm install react-native-fcm --save
b) Link 库 react-native link react-native-fcm
c) 从 firebase 控制台下载 GoogleService-Info.plist
文件并将其放入 /ios/my-project 目录
d) 使用 Cocoapods 安装 Firebase 消息传递
1. cd ios && pod 初始化
2. 将 pod 'Firebase/Messaging'
添加到 Podfile
3.pod install
e) 编辑 AppDelegate.h
@import UserNotifications;
@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
/*@interface AppDelegate : UIResponder <UIApplicationDelegate>*/
f) 编辑 AppDelegate.m
#import "RNFIRMessaging.h"
//...
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//...
[FIRApp configure];
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
return YES;
}
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{
[RNFIRMessaging willPresentNotification:notification withCompletionHandler:completionHandler];
}
#if defined(__IPHONE_11_0)
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
{
[RNFIRMessaging didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
}
#else
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
{
[RNFIRMessaging didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
}
#endif
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[RNFIRMessaging didReceiveLocalNotification:notification];
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler
{
[RNFIRMessaging didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
g) 启用功能
- 推送通知
- 后台模式 > 远程通知
然后我将我的应用程序存档在 ipa
中并尝试在设备上启动它。出现加载屏幕后应用程序崩溃。请解释一下,我的错误在哪里?
PS。没有一个 .js
文件不是从 create-react-native-app
命令更改的。
请仔细阅读注释,他解释了为什么你应该切换到 react-native-firebase
我正在尝试通过 react-native-fcm
接收推送通知。正如文档所说,我安装并实施了以下所有步骤
a) 安装 react-native-fcm npm install react-native-fcm --save
b) Link 库 react-native link react-native-fcm
c) 从 firebase 控制台下载 GoogleService-Info.plist
文件并将其放入 /ios/my-project 目录
d) 使用 Cocoapods 安装 Firebase 消息传递
1. cd ios && pod 初始化
2. 将 pod 'Firebase/Messaging'
添加到 Podfile
3.pod install
e) 编辑 AppDelegate.h
@import UserNotifications;
@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
/*@interface AppDelegate : UIResponder <UIApplicationDelegate>*/
f) 编辑 AppDelegate.m
#import "RNFIRMessaging.h"
//...
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//...
[FIRApp configure];
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
return YES;
}
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{
[RNFIRMessaging willPresentNotification:notification withCompletionHandler:completionHandler];
}
#if defined(__IPHONE_11_0)
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
{
[RNFIRMessaging didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
}
#else
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
{
[RNFIRMessaging didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
}
#endif
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[RNFIRMessaging didReceiveLocalNotification:notification];
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler
{
[RNFIRMessaging didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
g) 启用功能
- 推送通知
- 后台模式 > 远程通知
然后我将我的应用程序存档在 ipa
中并尝试在设备上启动它。出现加载屏幕后应用程序崩溃。请解释一下,我的错误在哪里?
PS。没有一个 .js
文件不是从 create-react-native-app
命令更改的。
请仔细阅读注释,他解释了为什么你应该切换到 react-native-firebase