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 later
            LOG.error("Connection error, should retry later", e);

        } catch (APIRequestException e) {
            // Should review the error, and fix the request
            LOG.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.完成

时间: 2024-10-11 20:02:43

IONIC集成jPush极光推送的相关文章

Java.lang.UnsatisfiedLinkError android studio集成Jpush极光推送

今天学习了极光推送,想把它集成到自己的应用里面,我的开发环境是android studio 1.2,期间遇到了错误: Couldn't load jpush174 from loader dalvik.system.PathClassLoader findLibrary returned null,原因是由于android studio不能正确的解决libjpush174.so文件造成的,解决步骤如下: 1.首先按照官网教程配置环境,链接如下:http://docs.jpush.io/guide

AndroidStudio离线打包MUI集成JPush极光推送并在java后端管理推送

1.AndroidStudio离线打包MUI 如何离线打包请参看上篇随笔<AndroidStudio离线打包MUI> 2.集成极光推送 官方文档:https://docs.jiguang.cn/jpush/client/Android/android_guide/ 建议采用 jcenter 自动集成 的方式,手动集成对新手来说容易出错 使用jcenter自动集成的开发者,不需要在项目中添加jar和so,jcenter会自动完成依赖:在AndroidManifest.xml中不需要添加任何JPu

Android JPush极光推送应用

JPush纠结了5-6个小时,一直报下面的错误,纠结! [AndroidUtil] AndroidManifest.xml missing required intent filter for PushReceiver: cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY 觉得明明是已经添加了cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY 主要问题是主包名没有弄好,才导致的错误!接下来感谢

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消息的支持 2 1.4. 是否支持转义字符 2 2. 客户端身份识别机制 2 3. 绑定客户端的区别流程::jpush胜出 2 4. 文档风格比较::百度,jpush胜出 3 5. 编程sdk框架比较..个推,百度胜出 3 6. 编程风格的比较 3 6.1. 个推 3 6.2. 百度 4 6.3. J

Ionic JPush极光推送 插件实例

1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ionicframework.ltapp) ionic start  -i com.ionicframework.ltapp ltapp blank 3.添加JPush 插件 进入 项目目录下 cd  ltapp git clone https://github.com/jpush/jpush-phoneg

JPush 极光推送 (集成流程)

JPush说明文档 JPush iOS 推送原理及问题 (参考:http://blog.jpush.cn/apns/) JPush iOS 初步了解推送方式 (详解: http://docs.jpush.io/client/ios_sdk/) 从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息. 红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果 APNs 服务器推送.由 APNs Se

JPush 极光推送 实战

极光推送的"自定义消息"很给力啊,他不是发送一条消息到状态栏,而是直接把消息内容传到APP中需要的地方,估计很多APP的验证码就是通过这种形式搞出来的. 简介 官网:https://www.jpush.cn/ 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率. 主要功能 保持与服务器的长连接,以便消息能够即时推送到达客户端 接收通知与自定义消息,并向开发者App传递相关信息

JPush (极光推送) For Xamarin.Android

官方教程上讲的是 GCM (Google Cloud Messaging) , 不过 GFW 是 GCM 过不去的坎. 极光推送 JPush 是国内的一个不错的替代方案. JPush 提供的 API 易于理解, 使用也很简单, 但是要使用于 Xamarin 还是要费些周章: 要转制成 Binding Library. JPush 提供了一篇转制的示例: http://smilehyh.blog.163.com/blog/static/123343886201362110857402/ 按照过程走

用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送的官方API以及帮助文档都在这里:http://docs.jpush.cn/display/dev/Index 其中服务端的接口以及示例代码都在这里:http://docs.jpush.cn/display/dev/Server-SDKs 大家有兴趣的可以看看,因为这次我做的不是客户端APP,所以一