在Android项目中快速接入极光推送(第三方库)
一、引言
由于在工作上可能会接触到相关的知识,所以这两天学习了一下极光推送的使用方法。学习过程中也遇到了不少的问题,所以就打算简单地总结一下。
那么,为什么我要接入极光推送呢?这里简单地回答一下这个问题。主要的原因是极光推送实现起来的消息推送时效性比较高,对于用户的手机的话也是省时省电;但如果是自己开发一个推送服务,简单开发可能会导致耗时耗电的问题,因为消息推送实现起来还是比较复杂的。个人或者小团体需要使用的话我感觉是没必要造轮子;大团队我感觉如有必要可以搞一搞。
二、在Android项目中快速接入(最精简)极光推送的笔记
此处笔记大多数来自于官方文档,如果内容上有出入的地方,请大家参考官方文档。
必备的环境:Android Studio,已经注册好的极光推送账号。
第1步
在Android Studio中创建一个项目,然后记录该项目的包名,假设这个包名是com.szu.weather。
第2步
在极光推送官网中创建一个应用,该过程会需要用到包名。不懂的话可以参考官网的详细步骤。创建应用成功后你就会得到一个AppKey,假设这个AppKey是g4u8ej62m7047000040aw5hd。
第3步
配置Module的gradle:这里一共需要填三个地方。
①在defaultConfig大括号中加入
ndk {//选择要添加的对应 cpu 类型的 .so 库。abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
如图(图中的包名记得写一下,而不是什么xxx.xxx):

②在ndk的后面加入(这里的话你需要填你的AppKey,而不是我那个)
manifestPlaceholders = [JPUSH_PKGNAME : applicationId,JPUSH_APPKEY : "g4u8ej62m7047000040aw5hd",JPUSH_CHANNEL : "developer-default",
]
加完后如图:

③在dependencies的大括号里面加入“cn.jiguang.sdk:jpush:5.0.3”。由于官方文档说从5.0.0版本开始可以自动拉取JCore包,所以我们就无需另外配置JCore了。加完后如图:

完成了③之后就不在需要通过jar包的方式导入极光推送第三方库了。
第4步
根据官方文档的推荐配置一个自定义的Service和自定义的Receiver。但切忌,这两个自定义的类需要声明为public,否则会出现闪退问题。我就是大意了,没加public,后边查到运行Android项目Unable to instantiate application, IllegalAccessException这篇文献才解决掉该问题。
①Service需要继承自cn.jpush.android.service.JCommonService,一开始不懂的话可以先空着这个文件。比如,

然后需要在AndroidManifest.xml文件中进行注册:

②Receiver需要继承自cn.jpush.android.service.JPushMessageReceiver。这个类和上面的Service差不多,一开始不懂也可以先空着。比如,
import cn.jpush.android.service.JPushMessageReceiver;public class DemoReceiver extends JPushMessageReceiver {
}
但其实这个类是接收具体的推送消息的,你可以在这个类里面通过Bundle来对推行进行解析、二次利用。
相应地,AndroidManifest.xml文件也需要对该Receiver进行注册:

第5步
创建一个应用类,继承自android.app.Application,然后在其中的onCreate方法初始化推送服务,例如
import android.app.Application;
import android.content.Context;import cn.jiguang.api.utils.JCollectionAuth;
import cn.jpush.android.api.JPushInterface;public class XXXApplication extends Application {@Overridepublic void onCreate() {super.onCreate();JPushInterface.setDebugMode(true);Context context = this;JPushInterface.init(context);JCollectionAuth.setAuth(context, true); //如初始化被拦截过,将重试初始化过程}
}
该类也需要注册到AndroidManifest.xml文件之中

第6步
在AndroidManifest.xml文件中声明基本的权限,官方说必备的是
第7步
在MainActivity中记得请求权限,
import androidx.appcompat.app.AppCompatActivity;import android.Manifest;
import android.os.Build;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);requestPermissions();}private void requestPermissions() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);}}
}
一共涉及4个类(代码行数估计在50以内吧):

编译运行写的APP,授予权限、查看界面、查看通知栏,如图:

第8步
在极光推送平台中进行推送,点击“发送预览”,然后“确认发送”:



第9步
在手机APP上查看推送(点击推送就会消失、也没有其它动作,因为我在Receiver类中没有进行设置),如图:

三、参考资料
1、Android快速接入 - 极光文档
2、极光推送的简单使用
四、结语
最后再说一下吧。对于第三方库,我建议还是直接查看官方文档进行配置和使用,看别人的博客可能会使你遇到很多的坑,这里也包括我的博客。技术博客通常是具有时效性的,如果踩到坑了也不要生气,比较第三方库一直都在迭代更新,过去几年的博客不适用是很正常的事情。多看官方文档就好了,切记呀!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
