Android 极光推送集成与使用详解

极光新建应用

首先需要有极光账号,在后台新建应用
Android 极光推送集成与使用详解_第1张图片
新建时会要求上传app图标和填写app名字,然后需要完成推送设置
Android 极光推送集成与使用详解_第2张图片
点击推送设置后出现android 与iOS的按钮,点击android后填写包名就好,
Android 极光推送集成与使用详解_第3张图片然后点击下载Demo来下载需要集成的控件,下载完成后,点击集成指南来进行参照集成过程
集成
我一般习惯手动集成,把下载的Demo解压后大体是这个结构
Android 极光推送集成与使用详解_第4张图片
首先复制文件,把libs里面的文件都拷贝到项目app目录下的libs包里面,把res文件夹下的资源拷贝到自己的资源文件夹下(注意values里面的strings与style,不要直接覆盖,把内容复制到自己的文件中去),然后打开AndroidManifest文件,把标注了Required的部分复制到自己的AndroidManifest中去,里面包名与极光的appKey都是配置好的。
然后,最最重要的一点 有好多人都是运行的时候出现了极光获取SDK版本失败的log
Get sdk version fail![获取sdk版本失败!],我用我集成了十几个app的经验告诉你,有百分之八十的概率是因为没有在app目录里的build.gradle中配置

 sourceSets.main {
        jniLibs.srcDirs = ['libs']
    }

这句代码,它是用来引入libs里面的.so文件的。
到这配置文件就好了,接下来就需要集成推送代码了。
打开Demo里的src,把里面有ExampleApplication拷贝到项目,并且在AndroidManifest中引入,如果项目已经有了Application,那就把

JPushInterface.setDebugMode(true);  // 设置开启日志,发布时请关闭日志
JPushInterface.init(this);          // 初始化 JPush

这两句代码拷贝到自己的Application的onCreate方法上。
到此最基本的集成就完成了,项目跑一遍后log日志会出现Login succeed的提示,然后就可以在后台测试一下推送通知了,
Android 极光推送集成与使用详解_第5张图片
注意,在极光推送的集成指南中,到此也就结束了,但真正在app使用中还是有些问题需要注意


以上的推送设置只会推送给所有用户
如果需要全部推送,不用看。
实际上大多app是需要登录的,推送在更多时候是需要分类推送,或者针对一个用户推送。
我来举个栗子,你的app是一个技术分享app。
用户注册后会选择自己的职业或者感兴趣的领域,如果他是android工程师,难道你要给他推送iOS的知识干货么?,所以需要分类推送,这就需要极光里的标签。
而你在app里面写了一篇很赞的文章,你有人给你点赞或者评论,你接收到推送的通知,xxx点赞了你的文章,xxx评论了你的文章,这就是针对一个用户推送,这就需要极光里的别名
暂且不说后台需要怎么做,我只说app 端,用户需要在登录后通过方法

JPushInterface.setAliasAndTags();

给自己打一个别名和标签,让后台知道你是哪一类,然后针对性推送

登录与注销
如果需要全部推送,不用看。
用户登录后能够接收到通知,但是注销后呢?如果仅仅使用了上面的过程,我可以很负责任的告诉你,你退出登录后仍然能接收到通知,因为你开启了推送,并没有在注销时停止推送。
注销后

 JPushInterface.stopPush(getApplicationContext());

登录设置setAliasAndTags后判断如果推送停止的话恢复推送

  if (JPushInterface.isPushStopped(mContext)) {
                        JPushInterface.resumePush(getApplicationContext());
                    }

点击通知栏上的通知后通知会消失
真正在app上会有要求,比如说你需要做成点击后跳转到某一个页面,打开Demo里的src中的MyReceiver文件,它就是来监听通知的,可以把它拷贝到项目,注意不要忘了在AndroidManifest中声明哦,

 <receiver
            android:name="包名.MyReceiver"
            android:exported="false"
            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" /> 
                <action android:name="cn.jpush.android.intent.CONNECTION" />
                <category android:name="包名" />
            intent-filter>
        receiver>

然后再来修改一下MyReceiver,里面就有点击通知后的操作,修改里面的intent和传值

你可能感兴趣的:(极光推送)