最近在做关于APP的消息推送,做这个块消息推送有许多第三方插件,但目前项目用的react-native,所以推荐使用的是极光推送。
极光官网 这是官方的可以免费推送数据,当然你也可以使用postman等发送数据的工具。前提的看极光官方文档需要填写什么参数以及各式。
这里有个官方有个专门jpush的讨论社区 极光社区
当然也有gitHub上的列子 jpush
说了这么多开始说说开关的坑把。
APP推送,iOS和android有区别的
- iOS大家都知道进入app的时候会自带系统级别的提醒你是否打开消息通知,在国内一般不存在这样的操作。
- android是进入的时候就自动打开这个推送设置了。在国外如果你没提醒就自动打开这个推送设置,别人可以控告你侵权。
那么怎么去监听iOS系统级别开关消息通知呢?
- 目前我只能想到你判断的时候需要去判断下iOS的系统,毕竟iOS系统版本不一样可能差异不同,这里我就从iOS8判断
if (IOS8) { //iOS8以上包含iOS8
if ([[UIApplication sharedApplication] currentUserNotificationSettings].types == UIRemoteNotificationTypeNone) {
}
}else{ // ios7 一下
if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
}
}
复制代码
react-native 里面怎去判断是否是iOS还是android系统
improt Platform from 'react-native';
if(Platform.OS === 'android'){
}else{}
复制代码
js我也想去监听IOS用户是否点击允许接受通知系统级别的呢?
可以通过locaStorage来做,在react-native里面的Action里面设置一个Strorage来保存用户点击的状态通过回调函数Prmoise,异步来监听这个结果。
improt NativeModule from 'react-native';
const NEBcomponent = NativeModule.NEBcomponent;
getInfo = async () =>{
return new Prmoise((resolve, reject) =>{
NEBcomponent.isNotificationOpened(async (error, cakkback) => {
if(cakkback){
resolve(callback)//当用户点击允许的时候
}else{
reject(error);
}
});
}
};
复制代码