android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(二)
接着上一篇的日历控件咱们继续聊,这一部分我们来集成极光推送。首先我们得有极光的账号,没有的同学可以去极光官网注册https://www.jiguang.cn/,然后可以去看集成指南,其实还是比较简单的,
看**册之后的页面上应该注意的地方,首先新建一个项目,项目名称随意命名
进入项目的----“设置”
继续进入推送设置
Android SDK 集成指南 - 极光文档 http://docs.jiguang.cn/jpush/client/Android/android_guide/
注册好之后就开始按照文档一步步集成了
下图红色方框才是我们应该关注的部分,除非你想深入学习了解极光,一般情况下集成进来就够用了,不过如果是真实的项目开发的话还是应该深入了解,避免踩坑!!!
看下我按照文档写的内容进行的配置
基本上按照文档,添加到相应的位置就可以了,两个个要注意的地方
1.将JPUSH_APPKEY : "你的appkey", //JPush上注册的包名对应的appkey.
2.统计渠道名称中我填入的是空字符串,暂时没有对外发布的渠道,只是做测试用。
好了,极光已经集成好了,下面配置下我们的应用,按照极光文档的要求来一步一步设置。
我们需要新建一个Application,然后调用极光的初始化代码init()
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); JPushInterface.setDebugMode(true); JPushInterface.init(this); } }记住,该Application一定要在Manifest中进行配置,
android:name=".MyApp"
来看下最终的效果如何,首先编辑消息(选择发送通知,其他的暂时看不到效果的),选择立即发送,切换到模拟器或者调试的手机查看效果
——————————————————下面的是讲自定义消息处理的部分——————————————————
我们集成了极光之后,还只能发布通知(Notification),自定义消息还不能发送(至少手机端没有响应??),是不是真的没推送呢,其实极光已经推送给了手机端,只是手机端没有进行相应的解析和响应而已。下面我们来自定义接收广播进行消息处理。仍然按照文档来学习
按照文档说明,我们自定义一个广播来处理消息,可以直接复制代码了
首先在Manifest.xml中注册自定义的广播接收器
<receiver android:name=".receiver.MyJPushReceiver" android:enabled="true"> <intent-filter> <!--Required 用户注册SDK的intent--> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户打开自定义通知栏的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <action android:name="cn.jpush.android.intent.CONNECTION" /> <category android:name="com.cjt.customcalendar" /> </intent-filter> </receiver>
想要成功的拿到自定义的消息,就必须知道JPush定义的API接口,接下来看下自定义的广播的写法
public class MyJPushReceiver extends BroadcastReceiver { private static final String TAG = "Cjt"; @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())) { String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId); }else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) { Log.d(TAG, "收到了自定义消息。消息内容是:" + bundle.getString(JPushInterface.EXTRA_MESSAGE)); // 自定义消息不会展示在通知栏,完全要开发者写代码去处理 } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { Log.d(TAG, "收到了通知"); // 在这里可以做些统计,或者做些其他工作 } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { Log.d(TAG, "用户点击打开了通知"); // 在这里可以自己写代码去定义用户点击后的行为 Intent i = new Intent(context, TestActivity.class); //自定义打开的界面 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } else { Log.d(TAG, "Unhandled intent - " + intent.getAction()); } } }
来看下打印的日志,
好了,基本上普及了极光推送的基本知识了,下一部分将会涉及到推送的运用,结合LitePal数据库的使用