在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 {
    @Override
    public void onCreate() {
        super.onCreate();
        JPushInterface.setDebugMode(true);

        Context context = this;
        JPushInterface.init(context);

        JCollectionAuth.setAuth(context, true); //如初始化被拦截过,将重试初始化过程
    }
}

        该类也需要注册到AndroidManifest.xml文件之中

        第6步

        在AndroidManifest.xml文件中声明基本的权限,官方说必备的是

    <!-- 记得修改相应的包名(共有两处需要修改) -->
    <permission android:name="com.szu.weather.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> 
    <uses-permission android:name="com.szu.weather.permission.JPUSH_MESSAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

        第7步

        在MainActivity中记得请求权限,

import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.os.Build;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected 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、极光推送的简单使用

四、结语

        最后再说一下吧。对于第三方库,我建议还是直接查看官方文档进行配置和使用,看别人的博客可能会使你遇到很多的坑,这里也包括我的博客。技术博客通常是具有时效性的,如果踩到坑了也不要生气,比较第三方库一直都在迭代更新,过去几年的博客不适用是很正常的事情。多看官方文档就好了,切记呀!

猜你喜欢

转载自blog.csdn.net/qq_36158230/article/details/131834127
今日推荐