iOS消息推送的基本流程
1.注册:为应用程序申请消息推送服务。此时你的设备会向APNs服务器发送注册请求。2. APNs服务器接受请求,并将deviceToken返给你设备上的应用程序 3.客户端应用程序将deviceToken发送给后台服务器程序,后台接收并储存。 4.后台服务器向APNs服务器发送推送消息 5.APNs服务器将消息发给deviceToken对应设备上的应用程序
使用leanclound进行消息推送
优势:文档清晰,价格便宜
接入Leanclound
1.首先需要创建一个react-native项目
2.在leancloud创建一个同名项目,并记录好appid和appkey
3.项目创建成功后,安装推送所需的模块(需要cd到工程目录)
1.使用yarn安装
2.使用npm安装
4.在项目目录下新建一个文件夹,名字为pushservice,在里面添加一个js文件PushService.js,处理消息推送的逻辑,
...
2.iOS端配置
首先,在项目中引入RCTPushNotification,详情请参考:
步骤一:将PushNotification项目拖到iOS主目录,PushNotification路径:当前项目/node_modules/react-native/Libraries/PushNotificationIOS目录下
步骤二:添加libRCTPushNotification静态库,添加方法:工程Targets-Build Phases-link binary with Libraries 点击添加,搜索libRCTPushNotification.a并添加
步骤三:开启推送功能,方法:工程Targets-Capabilities 找到Push Notification并打开
步骤四:在Appdelegate.m文件添加代码
//注册推送通知
-(void)application:(UIApplication )application didRegisterUserNotificationSettings:(UIUserNotificationSettings )notificationSettings{
[RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings];
}
// Required for the register event.
- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken
{
[RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
// Required for the notification event. You must call the completion handler after handling the remote notification.
- (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"收到通知:%@",userInfo);
[RCTPushNotificationManager didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
// Required for the registrationError event. - (void)application:(UIApplication )application didFailToRegisterForRemoteNotificationsWithError:(NSError )error
{
NSLog(@"error == %@",error);
[RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
}
// Required for the localNotification event. - (void)application:(UIApplication )application didReceiveLocalNotification:(UILocalNotification )notification
{
NSLog(@"接受通知:%@",notification);
[RCTPushNotificationManager didReceiveLocalNotification:notification];
}
5. 获取deviceToken,并将deviceToken插入到_Installation
找到PushService文件,编写代码
}
修改App.js文件 在componentDidMount初始化推送
运行项目,必须真机才能获取到deviceToken,模拟器获取不到,看看是否保存的deviceToken,如果保存成功,leandclound后台能发现_Installation表多了一条数据
,推送证书设置完成后,现在就去leanclound试试看能不能收到推送吧,退出APP,让APP处于后台状态,
点击发送,看是不是收到了消息.
进行到这步骤说明推送已经完成了一大半了,APP当然还需要包括以下功能:
APP处于前台状态时通知的显示
当APP在前台运行时的通知iOS是不会提醒的(iOS10后开始支持前台显示),因此需要实现的功能就是收到通知并在前端显示,这时候就要使用一个模块来支持该功能了,那就是react-native-message-bar
首先就是安装react-native-message-bar模块了
安装成功之后,在App.js文件中引入并注册MessageBar
然后再对PushService进行修改,新增对notification事件监听和推送消息的展示
}
...
最后重新运行APP并在leanclound发送一条消息,看是否在APP打开状态也能收到通知,到了这里推送就完成了
原文链接:https://www.f2er.com/js/31189.html