iOS判斷使用者是否開啟APP通知開關

sunshinezhong發表於2018-02-12

最近在做關於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);
             }
         });
    }
};
複製程式碼

春節將至。祝福大家新年快樂,情人節快樂。單身狗不要怕。程式設計師每天被殺死的腦細胞豈怕恩愛光~哈哈。

iOS判斷使用者是否開啟APP通知開關

相關文章