JPush极光推送详解
版权声明:本文为博主原创文章,未经博主允许不得转载。
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);//测试版为true JPushInterface.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中添加如下代码:
//设置Tag Set<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中添加如下代码:
//设置别名Alia JPushInterface.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中查看自定义消息是否真的被推送成功:
是不是推送成功了,是的,你猜对了!好了,今天的极光推送就到这里了,我是张星,欢迎关注。