android菜鸟练手小项目之自定义日历,涵盖LitePal数据库,极光推送(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010898329/article/details/71307979

接着上一篇的日历控件咱们继续聊,这一部分我们来集成极光推送。首先我们得有极光的账号,没有的同学可以去极光官网注册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数据库的使用



猜你喜欢

转载自blog.csdn.net/u010898329/article/details/71307979
今日推荐