这个周末,是最颓废的一个周末了。工作以来,基本每个周末都会学习点知识或者总结些东西。这个周末,身体不是很舒服,结果躺床上打了两天农药,也没有写博客。今天周一,正好我工作不忙,把上周末的博客补上。今天的博客,源于今天项目中的一个小需求:推送。这个需求不是我来做,但是我也有点兴趣,就研究了一下极光推送,并尝试着做了集成。好了,接下来总结一下极光推送在Android的集成和使用。
1.使用邮箱和手机号注册极光推送,注册完后登录,创建应用。在下方推送设置中点击去设置,配置应用的包名。
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中配置
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
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.发送推送消息
2.查看结果:
以上,就是对极光推送集成和基本使用的总结。通过本篇文章,我们可以发现,集成极光推送可以轻松实现app的推送,随时随地的推送。