最近在做關於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通知開關](https://i.iter01.com/images/4cc0686234ee281f68f166b7b309d555e39965b7e1c6e638ab332d208838d81c.jpg)