uniapp uni-push2.0,iOS、Android的在线离线的推送
本次是后端服务的 苹果和安卓手机FCM的推送
说明:
ios在线的时间可以监听到服务端推送的数据
ios离线是监听不到推送的数据,只能在消息栏点击后才能监听到数据
android在线可以监听到服务端数据
android离线同样不能监听到,点击打开后可监听
android(FCM)离线需要连接外网才可收到消息
ios、android在线的状态会执行自定义创建消息栏,离线的时候是不执行自定义的,默认走自动创建消息栏
服务端执行推送时,传递参数force notficaion.tue,客户端就会自动创建“通知栏消息”(此时你监听不到消息内容),当用户点击通知栏消息后,APP才能监听到消息内容。

检查cid、device token是否正常

Android

IOS



import store from '@/store'
import Vue from 'vue'
export default {
init: () => {
// #ifdef APP-PLUS
plus.push.setAutoNotification(true); //设置通知栏显示通知 //必须设置
//点击 通知信息
plus.push.addEventListener("click", function(msg) {
plus.push.clear(); //清空通知栏
plus.runtime.setBadgeNumber(0)
pushClick(msg)
}, false);
// 监听在线消息事件
plus.push.addEventListener("receive", function(msg) {
console.log(msg)
// if (typeof (msg.payload )=='string') { //如果是字符串,表示是ios创建的 要转换一下
// msg.payload=JSON.parse(msg.payload )
// }
if (uni.getSystemInfoSync().platform == "ios") {
if (msg.type == 'receive') { //类型为收到receive
pageEmit(msg)
}
} else {
pageEmit(msg)
}
if(msg.payload.push_type){
let pushType=(msg.payload.push_type).toLowerCase()
if(pushType == "logout"){
uni.setStorageSync("firstT",1)
uni.reLaunch({
url:"/pages/login/login?pushLogout=1"
})
}
}
}, false);
// #endif
},
//获取Cid
getClient: (callback) => {
// #ifdef APP-PLUS
let clientInfo = plus.push.getClientInfo(); //获取 clientID
uni.setStorageSync('clientid', clientInfo.clientid)
console.log(clientInfo);
// #endif
}
}
// 创建通知栏
const pageEmit = (payload) => {
let langValue=uni.getLocale()!='en'?"zh-Hant":uni.getLocale();
let data=payload
let pushType = data.payload.push_type
console.log(pushType)
//创建本地消息
let titVal=(langValue=='zh-Hant'?data.payload.title_cn:data.payload.title_en)
let conVal=(langValue=='zh-Hant'?data.payload.content_cn:data.payload.content_en)
plus.push.createMessage(conVal,data.payload,{
title:titVal,
sound: "system",
cover: false
})
}
//点击 通知信息
const pushClick = (msg) => {
console.log(msg)
let data=msg
if(!msg) return false;
if (typeof (msg.payload )=='string') { //如果是字符串,表示是ios创建的 要转换一下
msg.payload=JSON.parse(msg.payload)
}
let pushType=(data.payload.push_type).toLowerCase()
if(pushType == "payment" || pushType == "refund"){
if(data.payload.merchant_reference){
uni.navigateTo({
url:"/pages/receiptTransaction/details?merchant_reference="+data.payload.merchant_reference
})
}
}else if(pushType == "logout"){
let ft=uni.getStorageSync("firstT")
if(ft==1){
uni.reLaunch({
url:"/pages/login/login?pushLogout=1"
})
}else{
uni.setStorageSync("firstT",1)
}
}
}
在App.vue页面的onLaunch
//推送的 接收 创建 点击
push.init()
push.getClient()


浙公网安备 33010602011771号