JPush极光推送详解

来源:互联网 发布:lg pd251软件 编辑:程序博客网 时间:2024/06/05 10:01
 

JPush极光推送详解

标签: JPush极光推送JPush解析
 10458人阅读 评论(3) 收藏 举报
 分类:

目录(?)[+]

1.JPush的简单介绍

    JPush是一种专业而免费的第三方云推送推送平台,又名极光推送,在同行中开发者对JPush较为青睐,哈哈,不仅仅是因为它是免费的,服务也是非常到位的。

2.JPush的集成步骤

1.新建一个工程,复制自己的应用包名。

2.登陆极光官网,注册用户并使用第一步中的应用包名创建自己的应用。

3.然后下载极光SDK,然后根据sdk中的AndroidManifest配置自己工程中的mainfest

参考开发文档:

复制备注为 "Required" 的部分(列举部分,凡是备注Required都要复制到位)

<!-- Required  一些系统要求的权限,如访问网络等--><uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE"/><uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS"/><uses-permission android:name="android.permission.VIBRATE"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

将备注为替换包名的部分,替换为当前应用程序的包名


将需要替换成你自己的应用包名换成${application},相当于间接的填写了自己的应用包名

将AppKey替换为在Portal上注册该应用的的Key

<meta-data    android:name="JPUSH_APPKEY"    android:value="00b190c0d9b4deb0e76445ba"/> <!--  </>值来自开发者平台取得的AppKey-->
这个appkey千万别忘了!

④配置receive

<receiver    android:name=".MyReceiver"    android:enabled="true">    <intent-filter>        <action android:name="cn.jpush.android.intent.REGISTRATION" />        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />        <category android:name="hongda.zhangxing.com.jpushdemo" />    </intent-filter></receiver>
好了,manifest的配置就搞定了。

4.将SDK中libs目录中对应复制到自己的工程

①将jpush-android-2.2.0.j复制到自己工程的libs下

②在app-->src-->main下创建文件夹jniLibs,将SDK中libs目录下除了jar包之外的cpu文件拷贝到jniLibs中

5.推送的主要代码

①MainActivity.java中添加两行代码:

JPushInterface.setDebugMode(true);//测试版为trueJPushInterface.init(this);

②创建Receive

public class MyReceiver extends BroadcastReceiver {    private static final String TAG = "JPush";    @Override    public void onReceive(Context context, Intent intent) {        Bundle bundle = intent.getExtras();        Log.d(TAG, "onReceive - " + intent.getAction());        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {            System.out.println("收到了自定义消息:"+bundle.getString(JPushInterface.EXTRA_MESSAGE));            // 自定义消息不会展示在通知栏,完全要开发者写代码去处理        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {            System.out.println("收到了通知");            // 在这里可以做些统计,或者做些其他工作        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {            System.out.println("用户点击打开了通知");            // 在这里可以自己写代码去定义用户点击后的行为            Intent i = new Intent(context, MainActivity.class);  //自定义打开的界面            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);        } else {            Log.d(TAG, "Unhandled intent - " + intent.getAction());        }    }}

现在就阔以实现推送了。

6.进入极光控制后台:

点击推送,先发一条通知,编辑内容,进行推送(偷偷告诉你,在可选选项中可以对推送标题进行设置)

自定义标题:

推送效果图:

补充:推送成功logcat会有通知,点击了通知,logcat也会有相应的提示,那么之后的逻辑功能就需要我们强大的程序猿来开发喽!


这些提示当然是在Receiver中自定义的:


3.JPush的推送方式

1.通过标签按类型推送:

①在MainActivity中添加如下代码:
//设置TagSet<String> sets = new HashSet<String>() ;sets.add("sport");sets.add("music");JPushInterface.setTags(this, sets, new TagAliasCallback() {    @Override    public void gotResult(int i, String s, Set<String> set) {        Log.d(TAG,"set tag result is"+i);    }});
②在进行推送的时候,标明将要推送的Tag


2.通过别名Alias推送

①在MainActivity中添加如下代码:
//设置别名AliaJPushInterface.setAlias(this, "zhangxing", new TagAliasCallback() {    @Override    public void gotResult(int i, String s, Set<String> set) {        Log.d(TAG,"set Alias result is"+i);    }});
②在进行推送的时候,标明将要推送的Alias

3.通过Register ID推送,不过这个id一般都在极光后台,我们不好获取,这种就免了哈。

补充:这里我再对自定义消息说明一下,自定义消息不像通知一样显示在通知栏,它发生在应用程序内部,需要开发者自己去按需求去展示它高冷的姿态。
①点击自定义消息,推送一条自定义消息:



②点击推送后,通知栏并没有啥情况,这是毋庸置疑的,有情况才不正常了,那么可以在logcat中查看自定义消息是否真的被推送成功:



是不是推送成功了,是的,你猜对了!好了,今天的极光推送就到这里了,我是张星,欢迎关注。