ionic集成jPush极光推送
一.簡介:
極光推送(JPush)是獨立的第三方云推送平臺,致力于為全球移動應用開發者提供專業、高效的移動消息推送服務。
極光推送,英文簡稱 JPush,是一個面向普通開發者開放的,免費的第三方消息推送服務。
?
二.官網:https://www.jiguang.cn/
首先注冊一個賬號,登陸平臺,在控制臺添加我們的應用信息
點擊提交
會成一個AppKey和Master Secret這兩個密鑰主要用來配置服務端發送通知使用。
?
三.開整
官方的栗子:https://github.com/jpush/jpush-phonegap-plugin
1.首先創建一個ionic項目jpushDemo
ionic start -a jpushDemo -i com.kangnuo.jpushDemo jpushDemo blank ionic start -a 應用名 -i 包名 文件夾名 blank 項目創建完成,用IDE打開后發現這是一個完全空的項目,打開根目錄的config.xml發現上面配的-i?com.kangnuo.jpushDemo 也就是包名完全沒啥用,還是com.ionicframework.starter,手動把包名改下com.kangnuo.jpushDemo 添加android平臺 ionic platform add android 2.安裝插件 插件下載:git clone?https://github.com/jpush/jpush-phonegap-plugin.git jPush 插件需要依賴org.apache.cordova.device這個插件,看插件名稱為舊版本device插件,新版為cordova-plugin-device,因為我們現在APP使用的為新版,先裝上新版本試試 ionic plugin add cordova-plugin-device 然后安裝jpush:?ionic plugin add 你的插件目錄/jpush-phonegap-plugin –variable API_KEY=appKey 發現報錯,error了一大堆英文,大體意思是我們需要org.apache.cordova.device這個插件,卻在項目中發現cordova-plugin-device這個插件。OK,刪掉cordova-plugin-device插件,裝上org.apache.cordova.device這個,重新裝jpush插件,成功。。(注:現在新版插件已修改,沒有這個問題了) 有沒有什么辦法不用舊版的device插件,用最新的呢–> ?看下jpush插件的config.xml文件 發現這樣一行配置 <dependency id=”org.apache.cordova.device” url=”https://github.com/apache/cordova-plugin-device.git” />? id是老版的插件,url卻指向的新版插件,把id改成cordova-plugin-device重裝試下,OK 安裝成功。 3.項目配置 打開項目根目錄中app.js 直接貼配置代碼 angular.module(‘starter’, [‘ionic’,’ui.router’]).run(function($ionicPlatform) {$ionicPlatform.ready(function () {// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard// for form inputs)if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);cordova.plugins.Keyboard.disableScroll(true)}if (window.StatusBar) {StatusBar.styleDefault();}/*** 極光推送業務開始*///啟動極光推送服務 window.plugins.jPushPlugin.init();//設置顯示最新得條數window.plugins.jPushPlugin.setLatestNotificationNum(5);//調試模式if (device.platform == "Android") {window.plugins.jPushPlugin.setDebugMode(true);window.plugins.jPushPlugin.setStatisticsOpen(true);}else {window.plugins.jPushPlugin.setDebugModeFromIos();window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0);}//獲取RegistrationID getRegistrationID();//設置別名window.plugins.jPushPlugin.setAlias("bbbb");if (window.localStorage.getItem("platformType") == "WEIXIN" && window.localStorage.getItem("RegistrationID")){jPushInfo(window.localStorage.getItem("key"),window.localStorage.getItem("RegistrationID"));window.plugins.jPushPlugin.setAlias(window.localStorage.getItem("RegistrationID"));}if (device.platform == "Android") {//ANDROID接收消息window.plugins.jPushPlugin.receiveNotificationInAndroidCallback = function (data) {//expresstion };//ANDROID打開消息window.plugins.jPushPlugin.openNotificationInAndroidCallback = function(data){//expresstion };}else {//IOS接收消息(APP在前臺)document.addEventListener("jpush.receiveNotification", onReceiveNotification, false);//IOS打開消息document.addEventListener("jpush.openNotification", onOpenNotification, false);//IOS接收消息(APP在后臺)document.addEventListener("jpush.backgoundNotification", onBackgroundNotification, false);}/*** 極光推送業務結束*/});var onReceiveNotification = function(event) {//expresstion };var onBackgroundNotification = function (event) {//expresstion };var onOpenNotification = function(event) {//expresstion };var getRegistrationID = function() {window.plugins.jPushPlugin.getRegistrationID(onGetRegistrationID);};var onGetRegistrationID = function(data) {try {console.log("JPushPlugin:registrationID is " + data);if (data.length == 0) {window.setTimeout(getRegistrationID, 1000);}else {window.localStorage.setItem("RegistrationID",data);}} catch (exception) {console.log(exception);}};var isReceiveFunc = function (pushId) {//expresstion };var isOpenFunc = function (pushId) {//expresstion };var jPushInfo = function (key,RegistrationID) {//expresstion };}); APP配置完成 打開極光控制臺,找到jpushDemo的應用->推送消息,填寫推送內容點擊推送,手機就會收到推送消息了。 注:APP在運行時,手機會提示jPush建議集成SDK時添加統計代碼。 解決辦法: 在?platforms/android/src/com/kangnuo/jpushDemo/MainActiovity.java中MainActivity類添加以下代碼 import cn.jpush.android.api.JPushInterface;@Override protected void onResume() {super.onResume();JPushInterface.onResume(this); } @Override protected void onPause() {super.onPause();JPushInterface.onPause(this); }?
4.調試
jPush插件在使用過程中會用到手機接收通知,以及用戶打開手機通知等事件,這些jPush都已有現成的方法(receiveMessageInAndroidCallback,openNotificationInAndroidCallback ==)只要在這些回調方法中添加自己的業務邏輯代碼就可以,調試過程中SDK使用logCat來打印APP運行狀態。而且jPush在接受自定義消息時是不會顯示在手機通知欄中,需要通過log來進行調試,ionic APP中可以使用CLI方式運行來調試。
ionic cli 使用說明:?http://ionicframework.com/docs/v2/cli/run/
命令:ionic run android -l -i
注:在使用中發現 app安裝到手機上打開一直提示 application error,network error ,需要添加白名單插件 ,運行
ionic plugin add cordova-plugin-whitelist然后就可以在terminal看到手機app運行時log信息了。。
?
5.服務端推送java實現方式
首先在項目中添加依賴包,打開pom.xml添加
<dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.2.9</version> </dependency>推送實現方法(官方文檔很全)
JPushClient jpushClient = new JPushClient(masterSecret, appKey, 3);// For push, all you need do is to build PushPayload object.PushPayload payload = buildPushObject_all_all_alert();try {PushResult result = jpushClient.sendPush(payload);LOG.info("Got result - " + result);} catch (APIConnectionException e) {// Connection error, should retry laterLOG.error("Connection error, should retry later", e);} catch (APIRequestException e) {// Should review the error, and fix the requestLOG.error("Should review the error, and fix the request", e);LOG.info("HTTP Status: " + e.getStatus());LOG.info("Error Code: " + e.getErrorCode());LOG.info("Error Message: " + e.getErrorMessage());} //進行推送的關鍵在于構建一個 PushPayload 對象。以下示例一般的構建對象的用法。 //快捷地構建推送對象:所有平臺,所有設備,內容為 ALERT 的通知。public static PushPayload buildPushObject_all_all_alert() {return PushPayload.alertAll(ALERT);}?
6.完成
轉載于:https://www.cnblogs.com/jeesezhang/p/5901105.html
總結
以上是生活随笔為你收集整理的ionic集成jPush极光推送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: entity reference在vie
- 下一篇: java基础07