Android开发之极光推送的集成

简介: 客户器端集成1、注册app,生成appKey 和 Master Secret注册app.png2、导入SDK开发包到你自己的应用程序项目配置sdk.

客户器端集成

1、注册app,生成appKey 和 Master Secret

img_4d032df2f742f2d6de61a55bf4f62b1c.png
注册app.png

2、导入SDK开发包到你自己的应用程序项目

img_9e4bad43db8cb09468524517d55d158f.png
配置sdk.png

3、配置 AndroidManifest.xml ,这部分内容太长,官方有明确说明,就不粘贴了
主要步骤为:
(1)复制备注为 "Required" 的部分
(2)将备注中所有 您应用的包名 的部分,替换为当前应用程序的包名
(3)将appKey替换为注册时的appKey

4、新建一个Application,如MyApp,重写onCreate(),进行参数初始化

public void onCreate()
 {
        super.onCreate();
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
 }

5、AndroidManifest.xml中配置上面的application,即:

<application android:name="com.abc.MyApp">

官方参考:http://docs.jpush.io/guideline/android_guide/


服务器端集成

极光推送默认有个管理后台,但是需要每次登录到它的网站进行推送,觉得不是很方便,所以按照官方文档集成一个简单的服务器端,步骤如下:

1、下载服务端SDK,准备好如下jar包,一个不能少

img_d311fdee988ab395941007c9d869a43a.png
必须的jar包.PNG

2、封装消息和推送方法
MessagePush.java

/** * 封装消息推送方法 */
public class MessagePush {

    private static final String appKey = "你申请的appkey";
    private static final String masterSecret = "你申请时生成的masterSecret ";
    private JPushClient jpushClient;
    private String title;//推送的标题
    private String message;//推送的内容

    public MessagePush(String message) {
        this.message = message;
        //创建JPushClient
        jpushClient = new JPushClient(masterSecret, appKey, 3);
    }

    public MessagePush(String message, String title) {
        this(message);
        this.title = title;
    }

    /**
     * 向所有人发送消息
     * 
     * @return 消息id
     */
    public long sendPushAll() {
       //构建一个PushPayload对象(推送对象)
        PushPayload payload = buildPushObject_all_all_alert();
        long msgId = 0;
        try {
            //推送消息
            PushResult result = jpushClient.sendPush(payload);
            msgId = result.msg_id;
        } catch (APIConnectionException e) {
        } catch (APIRequestException e) {
            msgId = e.getMsgId();
        }
        return msgId;
    }

    /**
     * 向指定别名的客户端发送消息
     * 
     * @param alias
     *            所有别名信息集合,这里表示发送所有学生编号
     * @return 消息id
     */
    public long sendPushAlias(Set<String> alias) {
        PushPayload payloadAlias = buildPushObject_android_alias_alertWithTitle(alias);
        long msgId = 0;
        try {
            PushResult result = jpushClient.sendPush(payloadAlias);
            msgId = result.msg_id;

        } catch (APIConnectionException e) {
        } catch (APIRequestException e) {
            msgId = e.getMsgId();
        }
        return msgId;
    }

    /**
     * 向指定组发送消息
     * 
     * @param tag
     *            组名称
     * @return 消息id
     */
    public long sendPushTag(String tag) {
        PushPayload payloadtag = buildPushObject_android_tag_alertWithTitle(tag);
        long msgId = 0;
        try {
            PushResult result = jpushClient.sendPush(payloadtag);
            msgId = result.msg_id;
        } catch (APIConnectionException e) {

        } catch (APIRequestException e) {
            msgId = e.getMsgId();
        }
        return msgId;
    }

    /**
     * 封装了三种获得消息推送对象(PushPayload)的方法
     */
    public PushPayload buildPushObject_android_alias_alertWithTitle(
            Set<String> alias) {
        return PushPayload.newBuilder().setPlatform(Platform.android())
                .setAudience(Audience.alias(alias))
                .setNotification(Notification.android(message, title, null))
                .build();
    }

    public PushPayload buildPushObject_android_tag_alertWithTitle(String tag) {
        return PushPayload.newBuilder().setPlatform(Platform.android())
                .setAudience(Audience.tag(tag))
                .setNotification(Notification.android(message, title, null))
                .build();
    }

    public PushPayload buildPushObject_all_all_alert() {
        return PushPayload.alertAll(message);
    }
}

3、模拟服务器端推送,先全部推送,然后按Tag推送
Main.java

public class Main {

    public static void main(String[] args) {
        // 发送三次网络推送

        new Thread(new Runnable() {

            public void run() {

                for (int i = 0; i < 3; i++) {

                    // MessagePush push = new MessagePush("这是网络推送" + i, "测试"
                    // + i);

                    MessagePush push = new MessagePush("这是按Tag进行推送" + i, "测试" + i);

                    long msgId = push.sendPushTag("ABC");

                    System.out.println("********" + msgId);
                }
            }
        }).start();

    }

}

4、测试效果

img_abfbccbb8952f41b8f9707ccf21a053c.png
服务器端运行.png
  • 全部推送
img_50e570c82d4ef1650b2645bd32d8dd48.png
全部推送.png
  • 按Tag推送
img_460271d66788be76b2a8d477ede05348.png
按Tag推送.png

官方参考:http://docs.jpush.io/server/java_sdk/

目录
相关文章
|
2月前
|
API 定位技术 开发工具
百宝箱开放平台 ✖️ Android 集成说明
本文介绍如何通过SDK将百宝箱与友盟+ Android应用集成,涵盖环境配置、权限声明、混淆设置、SDK初始化及预初始化、日志查看、效果验证等步骤,并提供完整demo工程及参数说明,助力开发者快速实现功能集成。
122 1
百宝箱开放平台 ✖️ Android 集成说明
|
3月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
1461 123
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
293 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
247 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
595 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
数据采集 运维 DataWorks
DataWorks 千万级任务调度与全链路集成开发治理赋能智能驾驶技术突破
智能驾驶数据预处理面临数据孤岛、任务爆炸与开发运维一体化三大挑战。DataWorks提供一站式的解决方案,支持千万级任务调度、多源数据集成及全链路数据开发,助力智能驾驶模型数据处理与模型训练高效落地。
|
3月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
527 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
2月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
150 0
|
3月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
221 6
|
5月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
380 11