1荆秦、極光推送的原生插件
uniapp導入極光推送的本地插件,主要用于離線打包
JG-JPush的1.0.3版本
JG-JCore的1.0.1版本
下載地址:https://github.com/ShuKeHong/uniapp-JG.git
2力图、工程中導入本地插件
3步绸、App模塊配置
Push模塊不要勾選、Push模塊不要勾選吃媒、Push模塊不要勾選
官方是JPush瓤介,極光推送屬于原生插件吕喘,所以這里Push模塊不要勾選
4、App原生插件配置
這里以開發(fā)iOS離線打包為例
Android的廠商通道需要自己去申請刑桑,這里就不詳細介紹了
JG-JCore配置
JG-JPush配置
5氯质、自己封裝的js文件
這個js文件就不提供了,js里所有代碼都在下面祠斧。
// 引用方式
var jpushModule = uni.requireNativePlugin("JG-JPush");
console.log('【sk】【引用方式】【jpushModule】【requireNativePlugin】')
// 開啟 debug 模式闻察,默認是關閉
function openDebug() {
jpushModule.setLoggerEnable(true);
}
// 關閉 debug 模式,默認是關閉
function closeDebug() {
jpushModule.setLoggerEnable(false);
}
// 獲取 RegistrationID琢锋,只有當應用程序成功注冊到 JPush 的服務器時才返回對應的值辕漂,否則返回空字符串
function getRegistrationID(skBack) {
jpushModule.getRegistrationID(result=>{
// code number 狀態(tài)碼 0 - 成功, 1011 - iOS模擬器調(diào)用會報此錯誤
// registerID string 返回的 registrationID
console.log('【sk】獲取 RegistrationID=>',result.registerID)
skBack(result.registerID)
})
}
// 跳轉至系統(tǒng)設置頁面吴超,0 - 成功 1 - 失敗
function openSettingsForNotification() {
jpushModule.openSettingsForNotification((result)=>{
// code number 0 - 成功 1 - 失敗
console.log('【sk】跳轉至系統(tǒng)設置頁面result=>',result.code)
})
}
// 初始化SDK iOS 說明:如果在mainfest.json里 將JPUSH_DEFAULTINITJPUSH_IOS值配置為"true"钉嘹,插件內(nèi)部將默認初始化JPush,用戶則不需要調(diào)用該初始化方法鲸阻。
function initJPushService() {
console.log(jpushModule)
jpushModule.initJPushService()
}
// 連接狀態(tài)回調(diào)跋涣,true - 已連接, false - 未連接
function addConnectEventListener(skBack) {
jpushModule.addConnectEventListener(result=>{
// connectEnable boolean true - 已連接, false - 未連接
console.log('【sk】連接狀態(tài)回調(diào)=>',result.connectEnable)
skBack(result.connectEnable);
})
}
// 通知事件回調(diào)
function addNotificationListener(skBack) {
jpushModule.addNotificationListener(result=>{
// messageID string 唯一標識通知消息的 ID
// title string 對應 Portal 推送通知界面上的“通知標題”字段
// content string 對應 Portal 推送通知界面上的“通知內(nèi)容”字段
// badge string 對應 Portal 推送通知界面上的可選設置里面的“badge”字段 (ios only)
// ring string 推送通知界面上的可選設置里面的“sound”字段 (ios only)
// extras dictionary 對應 Portal 推送消息界面上的“可選設置”里的附加字段
// iOS dictionary 對應原生返回的通知內(nèi)容,如需要更多字段請查看該字段內(nèi)容
// android dictionary 對應原生返回的通知內(nèi)容鸟悴,如需要更多字段請查看該字段內(nèi)容
// notificationEventType string 分為notificationArrived和notificationOpened兩種
console.log('【sk】通知事件回調(diào)result=>',result)
skBack(result);
})
}
// 自定義消息事件回調(diào)
function addCustomMessageListener(skBack) {
jpushModule.addCustomMessageListener(result=>{
// messageID string 唯一標識通知消息的 ID
// content string 對應 Portal 推送通知界面上的“通知內(nèi)容”字段
// extras dictionary 對應 Portal 推送消息界面上的“可選設置”里的附加字段
console.log('【sk】自定義消息事件回調(diào)result=>',result)
skBack(result);
})
}
// 應用內(nèi)消息回調(diào)
function addInMessageListener(skBack) {
jpushModule.addInMessageListener(result=>{
// eventType string show - 應用內(nèi)消息展示 disappear - 應用內(nèi)消息已消失 click - 應用內(nèi)消息點擊
// messageType string 消息類型, eventType 不為 disappear時返回, inMessageNoti - 通知類型的inMessage
// content dictionary 應用內(nèi)消息內(nèi)容, eventType 不為 disappear 時返回
console.log('【sk】應用內(nèi)消息回調(diào)result=>',result)
skBack(result);
})
}
// 本地通知事件回調(diào)
function addLocalNotificationListener(skBack) {
jpushModule.addLocalNotificationListener(result=>{
// messageID string 唯一標識通知消息的ID
// title string 對應“通知標題”字段
// content string 對應“通知內(nèi)容”字段
// extras dictionary 對應“附加內(nèi)容”字段
console.log('【sk】本地通知事件回調(diào)result=>',result)
skBack(result);
})
}
// 添加一個本地通知
function addLocalNotification(e) {
jpushModule.addLocalNotification({
messageID: e.messageID ? e.messageID : '', // 唯一標識通知消息的ID
title: e.title ? e.title : '', // 對應“通知標題”字段
content: e.content ? e.content : '', // 對應“通知內(nèi)容”字段
extras: e.extras ? e.extras : {name: '', age: ''} // 對應“附加內(nèi)容”字段
})
}
// 移除指定的本地通知
function removeLocalNotification(e) {
jpushModule.removeLocalNotification({
messageID: e.messageID ? e.messageID : '' // 唯一標識通知消息的ID
})
}
// 移除所有的本地通知
function clearLocalNotifications() {
jpushModule.clearLocalNotifications()
}
// 標簽別名事件回調(diào)
function addTagAliasListener(skBack) {
jpushModule.addTagAliasListener(result=>{
// code number 請求狀態(tài)碼 0 - 成功
// sequence number 請求時傳入的序列號,會在回調(diào)時原樣返回
// tags StringArray 執(zhí)行tag數(shù)組操作時返回
// tag string 執(zhí)行查詢指定tag(queryTag)操作時會返回
// tagEnable boolean 執(zhí)行查詢指定tag(queryTag)操作時會返回是否可用
// alias string 對alias進行操作時返回
console.log('【sk】標簽別名事件回調(diào)result=>',result)
skBack(result);
})
}
// 新增標簽
function addTags(e) {
jpushModule.addTags({
'tags': e.tags ? e.tags : [], // StringArray string類型的數(shù)組
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號陈辱,會在回調(diào)時原樣返回
})
}
// 覆蓋標簽
function updateTags(e) {
jpushModule.updateTags({
'tags': e.tags ? e.tags : [], // StringArray string類型的數(shù)組
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號,會在回調(diào)時原樣返回
})
}
// 刪除指定標簽
function deleteTags(e) {
jpushModule.deleteTags({
'tags': e.tags ? e.tags : [], // StringArray string類型的數(shù)組
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號遣臼,會在回調(diào)時原樣返回
})
}
// 清除所有標簽
function cleanTags(e) {
jpushModule.cleanTags({
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號性置,會在回調(diào)時原樣返回
})
}
// 查詢指定 tag 與當前用戶綁定的狀態(tài)
function queryTag(e) {
jpushModule.queryTag({
'tag': e.tag ? e.tag : '', // string 需要查詢的標簽
'sequence': e.sequence ? sequence : 1 // number 請求時傳入的序列號,會在回調(diào)時原樣返回
})
}
// 查詢所有標簽
function getAllTags(e) {
jpushModule.getAllTags({
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號揍堰,會在回調(diào)時原樣返回
})
}
// 設置別名
function setAlias(e) {
console.log('設置別名',e)
jpushModule.setAlias({
'alias': e.alias ? e.alias : '', // string 有效的別名組成:字母(區(qū)分大小寫)鹏浅、數(shù)字、下劃線屏歹、漢字隐砸、特殊字符@!#$&*+=.|
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號,會在回調(diào)時原樣返回
})
}
// 刪除別名
function deleteAlias(e) {
jpushModule.deleteAlias({
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號蝙眶,會在回調(diào)時原樣返回
})
}
// 查詢別名
function queryAlias(e) {
jpushModule.queryAlias({
'sequence': e.sequence ? e.sequence : 1 // number 請求時傳入的序列號季希,會在回調(diào)時原樣返回
})
}
// 開啟 CrashLog 上報
function initCrashHandler() {
jpushModule.initCrashHandler()
}
// 設置地理圍欄的最大個數(shù)
function setMaxGeofenceNumber(e) {
jpushModule.setMaxGeofenceNumber(e.geofenceNumber ? e.geofenceNumber : 10) // 默認值為 10 ,iOS系統(tǒng)默認地理圍欄最大個數(shù)為20
}
// 刪除指定id的地理圍欄
function deleteGeofence(e) {
jpushModule.deleteGeofence(e.geofence ? e.geofence : '') // 刪除指定id的地理圍欄
}
// 設置 Badge
function setBadge(e) {
jpushModule.setBadge(e.badge ? e.badge : 0) // number
}
// 設置手機號碼
function setMobileNumber(e) {
jpushModule.setMobileNumber({
sequence: e.sequence ? e.sequence : 1, // number 請求時傳入的序列號,會在回調(diào)時原樣返回
mobileNumber: e.mobileNumber ? e.mobileNumber : '' // string 手機號碼 會與用戶信息一一對應幽纷∈剿可為空,為空則清除號碼友浸。
})
}
// 設置手機號碼回調(diào)
function addMobileNumberListener(skBack) {
jpushModule.addMobileNumberListener(result=>{
// code number 狀態(tài)碼 0 - 成功
// sequence number 請求時傳入的序列號,會在回調(diào)時原樣返回
console.log('【sk】設置手機號碼回調(diào)result=>',result)
skBack(result);
})
}
module.exports = {
openDebug: openDebug,
closeDebug: closeDebug,
getRegistrationID: getRegistrationID,
openSettingsForNotification: openSettingsForNotification,
initJPushService: initJPushService,
addConnectEventListener: addConnectEventListener,
addNotificationListener: addNotificationListener,
addCustomMessageListener: addCustomMessageListener,
addInMessageListener: addInMessageListener,
addLocalNotificationListener: addLocalNotificationListener,
addLocalNotification: addLocalNotification,
removeLocalNotification: removeLocalNotification,
clearLocalNotifications: clearLocalNotifications,
addTagAliasListener: addTagAliasListener,
addTags: addTags,
updateTags: updateTags,
deleteTags: deleteTags,
cleanTags: cleanTags,
queryTag: queryTag,
getAllTags: getAllTags,
setAlias: setAlias,
deleteAlias: deleteAlias,
queryAlias: queryAlias,
initCrashHandler: initCrashHandler,
setMaxGeofenceNumber: setMaxGeofenceNumber,
deleteGeofence: deleteGeofence,
setBadge: setBadge,
setMobileNumber: setMobileNumber,
addMobileNumberListener: addMobileNumberListener
}
6峰尝、具體實現(xiàn)代碼
根據(jù)自己業(yè)務要求進行具體開發(fā),下面是一些常用的實現(xiàn)代碼
// 極光推送-init
skJGPush.initJPushService()
// 極光推送-打開debug
skJGPush.openDebug()
// 極光推送-獲取rid
skJGPush.getRegistrationID(result => {
console.log('【業(yè)務getRegistrationID】', result)
uni.setStorageSync('skJGRegistrationID', result);
})
// 極光推送-通知事件回調(diào)
skJGPush.addNotificationListener(result => {
console.log('【業(yè)務addNotificationListener】', result)
this.getWarningBatteryCount();
})
// 極光推送-標簽別名事件回調(diào)
skJGPush.addTagAliasListener(result => {
console.log('【業(yè)務addTagAliasListener】', result)
})
7收恢、Xcode工程配置
這里用的HBuilderX是3.1.13
對應的SDK的Xcode工程也是3.1.13
8武学、完成
以上祭往,基于uniapp開發(fā)極光推送的iOS的離線打包就完成了。