iOS判断用户是否打开APP通知开关

2,789 阅读2分钟

最近在做关于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);
             }
         });
    }
};

春节将至。祝福大家新年快乐,情人节快乐。单身狗不要怕。程序员每天被杀死的脑细胞岂怕恩爱光~哈哈。