最近在使用Firebase做React Native的推送功能,分别在Android和iOS端集成了Firebase的CloudMessaging,其中有一个需求就是当用户收到Notification并点击时,能判断出App是启动(前台,或者按Home隐藏)还是未启动状态,从而做不同的响应.
具体怎么做区分呢? 请看代码:
@interface AppDelegate () <UNUserNotificationCenterDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions) {
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if ([userInfo isKindOfClass:[NSDictionary class]]) {
//位置 ①
//代码走到这里,说明用户点击Notification时,app是未启动状态
}
}
return YES;
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void(^)(void))completionHandler {
completionHandler();
NSDictionary * userInfo = response.notification.request.content.userInfo;
NSLog(@"userInfo %@", userInfo);
if ([userInfo isKindOfClass:[NSDictionary class]]) {
//位置 ②
//Notification点击后,不论App启动或未启动都会走到这里
//但是会晚于didFinishLaunchingWithOptions执行
//所以代码只执行了位置②,代表用户点击Notification时,程序是启动状态
}
}
@end