这个周末,是最颓废的一个周末了。工作以来,基本每个周末都会学习点知识或者总结些东西。这个周末,身体不是很舒服,结果躺床上打了两天农药,也没有写博客。今天周一,正好我工作不忙,把上周末的博客补上。今天的博客,源于今天项目中的一个小需求:推送。这个需求不是我来做,但是我也有点兴趣,就研究了一下极光推送,并尝试着做了集成。好了,接下来总结一下极光推送在Android的集成和使用。

一.注册和创建应用

1.使用邮箱和手机号注册极光推送,注册完后登录,创建应用。在下方推送设置中点击去设置,配置应用的包名。

android集成支付宝支付的步骤 android应用集成_android

2.保存包名后,下载Demo,可以参考里面的一些代码。

二.配置极光推送

        极光推送有手动配置和Jcenter自动配置两种方式。在这里,我使用的是Jcenter自动配置。

1.module的build.gradle文件中添加依赖:

(1)配置applicationId

applicationId "com.xxxxxxxxxx” //Jpush包名

2)配置.so

ndk {
    //选择要添加的对应 cpu 类型的 .so 库。
    abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
    // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}

3)配置manifestPlaceholders

manifestPlaceholders = [
        JPUSH_PKGNAME : applicationId,
        JPUSH_APPKEY : "xxxxxxxxxxxx”, //JPush 上注册的包名对应的 Appkey.
        JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]

(4)配置JPush和JCore

implementation 'cn.jiguang.sdk:jpush:3.3.4'  // 此处以JPush 3.3.4 版本为例。
implementation 'cn.jiguang.sdk:jcore:2.1.2'  // 此处以JCore 2.1.2 版本为例。

2.配置自定义Service

(1)继承JCommonService创建一个Service

package com.example.tuduzhao.tudujpush;

import cn.jpush.android.service.JCommonService;
/**
* Created by Tudu.Zhao
* on 2019/9/23
**/

public class TuDuPushService extends JCommonService {

}

(2)AndroidManifest中配置

<service android:name=".TuDuPushService"
    android:enabled="true"
    android:exported="false"
    android:process=":pushcore">
    <intent-filter>
        <action android:name="cn.jiguang.user.service.action" />
    </intent-filter>
</service>

3.配置自定义广播

(1)继承JPushMessageReceiver创建Receiver,重写其中用到的几个方法。

package com.example.tuduzhao.tudujpush;

import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;

/**
* Created by Tudu.Zhao
* on 2019/9/23
**/

public class TuDuPushReceiver extends JPushMessageReceiver {

    @Override

    public Notification getNotification(Context context, NotificationMessage notificationMessage) {
        return super.getNotification(context, notificationMessage);
    }

    @Override
    public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
        Log.d("TTTT","Opened");
      MainActivity.startActivity(context,notificationMessage.notificationContent);
        super.onNotifyMessageOpened(context, notificationMessage);
    }

    @Override
    public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
        Log.d("TTTT","Arrived");
        super.onNotifyMessageArrived(context, notificationMessage);
    }

    @Override
    public void onNotifyMessageDismiss(Context context, NotificationMessage notificationMessage) {
        Log.d("TTTT","Dismiss");
        super.onNotifyMessageDismiss(context, notificationMessage);
    }
}

(2)AndroidManifest中配置receiver

<receiver
    android:name=".TuDuPushReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <category android:name="com.example.tuduzhao.tudujpush" />
    </intent-filter>
</receiver>

 三.初始化极光推送

1.新建Application,在onCreate中初始化

package com.example.tuduzhao.tudujpush;

import android.app.Application;
import cn.jpush.android.api.JPushInterface;

/**
* Created by Tudu.Zhao
* on 2019/9/23
**/

public class TuDuApplication extends Application {

    @Override

    public void onCreate() {
        super.onCreate();
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
    }
}

2.在Manifest中配置自定义的Application

android:name=".TuDuApplication"

四.测试

        经过上面的步骤,我们已经配置好了极光推送,接下来,测试一下我们的推送。在点击通知的时候,打开主页,同时展示我们接收到的通知信息。

1.主页Activity

package com.example.tuduzhao.tudujpush;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    public static void startActivity(Context context,String message){
        Intent intent = new Intent();
        intent.setClass(context,MainActivity.class);
        intent.putExtra("message",message);
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = findViewById(R.id.tv);
        Intent intent = getIntent();
        if(intent!=null){
            String message = intent.getStringExtra("message");
            tv.setText(message);
        }
    }

}

2.发送推送消息

android集成支付宝支付的步骤 android应用集成_android_02

2.查看结果:

android集成支付宝支付的步骤 android应用集成_android集成支付宝支付的步骤_03

        以上,就是对极光推送集成和基本使用的总结。通过本篇文章,我们可以发现,集成极光推送可以轻松实现app的推送,随时随地的推送。