Android原生集成JPush SDK

        因为小黑是一名Unity开发,所以Android Studio上有写的不对的地方请大佬们指出,再集成的时候,有问题的或者疑问的也可以直接提出。

目录

使用版本:

接入JPush SDK

一:下载JPush的SDK

1、注册极光推送官网账号:

2、下载Android的SDK:

二、创建AS项目

1、导入SDK:

2、配置SDK:

至此:Android原生推送接入完毕

结束

唠家常

今日无推荐


使用版本:

Android Studio 4.2.1   (以下简称AS

JPush v4.0.6    (2021.06.23当天用的版本)

Unity 2020.3.12f1c1       (Android原生同学不用在意)

参考文档:极光推送 - Android SDK 集成指南 - 极光文档 (jiguang.cn)

接入JPush SDK

一:下载JPush的SDK

1、注册极光推送官网账号:

官网地址:首页 - 极光 (jiguang.cn)

Android原生集成JPush SDK_第1张图片

2、下载Android的SDK:

在进入极光推送页面后,把页面往下滑,页面顶部会出现(体验Demo),点击进入。

Android原生集成JPush SDK_第2张图片

接着我们创建自己的应用 Android原生集成JPush SDK_第3张图片

递交信息

Android原生集成JPush SDK_第4张图片

我们下一步Android原生集成JPush SDK_第5张图片

接着下一步后,我们点击下载SDK就可以了

下载完成后验证:是不是这三个文件,别的不管,主要是jiguang这个一定要存在才对,不然重新下载。


二、创建AS项目

我们一步一步的过,争取小黑自己再用的时候能直接成功,不打自己的脸。

1、导入SDK:

导入步骤:AndroidStudio -> File -> New -> Import Module -> 选择 jiguang 导入

2、配置SDK:

注意!一定要在build.gradle下添加配置,不然可能不成功!!在吐槽一下,极光对于AS新手,那真的是太不友好了,也不知道学学友盟+的官方文档。。

jcenter()
mavenCentral()

Android原生集成JPush SDK_第6张图片

Android原生集成JPush SDK_第7张图片

我们按个来啊

1、settings.gradle下添加include ':jiguang'   没问题

2、对AS小白手,真正操蛋的地方来了,官网之说再module gradle中添加SDKmanifestPlaceholders依赖,但是他没说在那个module中,小黑的东西也多,就挨个尝试啊,最后我发现得到jiguang这个Libraries下的build.gradle里边添加才对,别的地方都会报错,淦!!。

Android原生集成JPush SDK_第8张图片

            manifestPlaceholders = [
                JPUSH_PKGNAME : "包名",
                JPUSH_APPKEY : "APP_KEY", //JPush 上注册的包名对应的 Appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
                MEIZU_APPKEY : "MZ-魅族的APPKEY",
                MEIZU_APPID : "MZ-魅族的APPID",
                XIAOMI_APPID : "MI-小米的APPID",
                XIAOMI_APPKEY : "MI-小米的APPKEY",
                OPPO_APPKEY : "OP-oppo的APPKEY",
                OPPO_APPID : "OP-oppo的APPID",
                OPPO_APPSECRET : "OP-oppo的APPSECRET",
                VIVO_APPKEY : "vivo的APPKEY",
                VIVO_APPID : "vivo的APPID"
        ]

3、然后把我们要用到推送的地方,哪一个模块用就在那个模块下的build.gradle中添加配置。Android原生集成JPush SDK_第9张图片

4、接着在implementation project(':jiguang')同一个module中的AndroidManifest.xml中,添加配置,兵且按照要求,去继承该继承的类。Android原生集成JPush SDK_第10张图片Android原生集成JPush SDK_第11张图片

第一个类继承JCommonService,然后什么都不用管了。

package com.nativeai.pushai.push; 

import cn.jpush.android.service.JCommonService; 

public class PushService extends JCommonService { } 

第二个类继承:JPushMessageReceiver,并且要重写函数,具体内容是直接看的他们对于Unity部分集成的程序,所以你们知道怎么用就好了, 不用纠结从哪来的。这个东西,你越纠结,你就越想骂极光SDK的文档,什么垃圾东西,就没个逻辑清晰人整理么!~

代码会放到下方,争取让AS小白也能迅速接入极光推送。Android原生集成JPush SDK_第12张图片

package com.nativeai.pushai.push;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import cn.jpush.android.api.CmdMessage;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;


public class PushReceiver extends JPushMessageReceiver {
    private static final String TAG = "PushMessageReceiver";


	@Override
	public void onMessage(Context context, CustomMessage customMessage) {
  		Log.e(TAG, "[onMessage] " + customMessage);    		
	}

	@Override
	public void onNotifyMessageOpened(Context context, NotificationMessage message) {    
      	Log.e(TAG, "[onNotifyMessageOpened] " + message);    
    }


	@Override
	public void onMultiActionClicked(Context context, Intent intent) {
      	Log.e(TAG, "[onMultiActionClicked] 用户点击了通知栏按钮");   
      	String nActionExtra = intent.getExtras().getString(JPushInterface.EXTRA_NOTIFICATION_ACTION_EXTRA);   
      //开发者根据不同 Action 携带的 extra 字段来分配不同的动作。
      if (nActionExtra == null) {       
        	Log.d(TAG, "ACTION_NOTIFICATION_CLICK_ACTION nActionExtra is null"); 
        	return;
      }
      if (nActionExtra.equals("my_extra1")) {
        	Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮一");
      }
      else if (nActionExtra.equals("my_extra2")) {   
        	Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮二");    
      }
      else if (nActionExtra.equals("my_extra3")) {  
        	Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮三");    
      } 
      else {    
        	Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮未定义");   
      }   
    }

	@Override
	public void onNotifyMessageArrived(Context context, NotificationMessage message) {
      	Log.e(TAG, "[onNotifyMessageArrived] " + message);   
    }
	

	@Override
	public void onNotifyMessageDismiss(Context context, NotificationMessage message) {   
      	Log.e(TAG, "[onNotifyMessageDismiss] " + message);   
    }

	@Override	
	public void onRegister(Context context, String registrationId) { 
      	Log.e(TAG, "[onRegister] " + registrationId); 
      	//Intent intent = new Intent("com.jiguang.demo.register");  
      	//context.sendBroadcast(intent);
    }

	@Override
	public void onConnected(Context context, boolean isConnected) {    
      	Log.e(TAG, "[onConnected] " + isConnected);
    }

	@Override
	public void onCommandResult(Context context, CmdMessage cmdMessage) {  
      	Log.e(TAG, "[onCommandResult] " + cmdMessage);
    }


	@Override
	public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {   		
      	Log.e("push: ",":-----------------:      "   + jPushMessage);   
      	super.onTagOperatorResult(context, jPushMessage);
    }
	
	@Override
	public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
      Log.e("push: ",":-----------------:      "   + jPushMessage);    	
      super.onCheckTagOperatorResult(context, jPushMessage);
    }


	@Override
	public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {   
      Log.e("push: ",":-----------------:      "   + jPushMessage);   
      super.onAliasOperatorResult(context, jPushMessage);
    }

	@Override
	public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
      	Log.e("push: ",":-----------------:      "   + jPushMessage);   
      	super.onMobileNumberOperatorResult(context, jPushMessage);
    }

	@Override
	public void onNotificationSettingsCheck(Context context, boolean isOn, int source) {   
      	super.onNotificationSettingsCheck(context, isOn, source);   
      	Log.e(TAG, "[onNotificationSettingsCheck] isOn:" + isOn + ",source:" + source);
    }
}

5、初始化SDK,开发的时候按照官方建议,把Debug开着。

这里给大家留个坑(极光也是留坑再说明的),后边填上~

JPushInterface.setDebugMode(true); 
JPushInterface.init(getApplicationContext());

Android原生集成JPush SDK_第13张图片

让我们查看结果:

安装查看log,首先是初始化成功了,那么我们接着检查是否能接收到推送Android原生集成JPush SDK_第14张图片

然后我们创建推送Android原生集成JPush SDK_第15张图片

Android原生集成JPush SDK_第16张图片

这是网页上的,我们看看手机上效果,小米截屏没用明白,卡了个音量。。不要在意Android原生集成JPush SDK_第17张图片

Android原生集成JPush SDK_第18张图片可以看到,我们的推送消息成功了,并且极光官网也给了反馈,说你就一个目标,你推送成功了1个。。。All

6、点击推送内容,进入程序。

我们看log日志,要注意我标红的地方,一个是版本,一个是缺少东西。

小黑就可劲儿的看官方文档,反复看啊。也没发现说是我少集成什么了呀,怎么就缺少东西呢,反正看到推送的内容了,也就不管那么多了。Android原生集成JPush SDK_第19张图片

然后抱着尝试的心态,点击推送消息,结果App就崩了,日志都没有就崩了~~!你可知道小黑的绝望,小黑当时:满头问号?????

经过几次尝试后,放弃抵抗了,接着看官方文档吧,在翻阅了几篇后看到,初始化接口竟然换了,也就是之前JPushInterface.init接口可用性不大了,官网给你一个新的接口,叫做:JPushUPSManager.registerToken,淦!!为啥不写道一个文档中呢,或者给个URL可以点进去,大家可以快速知道!Android原生集成JPush SDK_第20张图片

于是小黑又看到了新希望,赶快去尝试一下,所以代码变成了,并且迫不及待地重新build,查看codemaAndroid原生集成JPush SDK_第21张图片

JPushUPSManager.registerToken(
  	mUnityPlayer.getContext(),
  	"201b576a5aaea1d3107a5efe",
  	null,
  	null,
  	(code)->{    Log.e("---","Android 端 JPush初始化结果为:  "+code.getReturnCode());
	}
);

嘿嘿嘿嘿,像是官方说的,0为成功。

那既然成功了,我们接着发一条推送内容,这时候推送刚到,我们的onNotifyMessageArrived函数就接收到了信息

然后我们从状态栏点开推送内容,接着我们的onNotifyMessageOpened函数又收到了消息,哈哈哈啊哈哈哈哈哈。

至此:Android原生推送接入完毕

如果你们还需要别的操作,看一些官方的API文档,有些进阶教程之类的,但小黑也不知道如何啊。。

极光推送 - Android SDK API - 极光文档 (jiguang.cn)

如果是Unity的同学,每次接到信息后,我们不就可以直接去和Unity通信了吗,和Unity通信

结束

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,总算让我这个AS小白弄出来了,垃圾极光文档编写人!没忘了喷他,喷死他,对新手不友好的文档。。而且为啥B站视频只有IOS原生的,对Android有偏见嘛!!!!!等我开始搞IOS原生的时候,小黑我在酌情喷啊,但愿我能少费些口水。。。

好了,接入文档至此告一段落咯

唠家常

  • 小黑的今日分享结束啦,小伙伴们你们get到了么,你们有没有更好的办法呢,可以评论区留言分享,也可以加小黑的QQ:841298494,大家一起进步。

今日无推荐

  • 客官,看完get之后记得点赞哟!
  • 小伙伴你还想要别的知识?好的呀,分享给你们
  • 小黑的杂货铺,想要什么都有,客官不进来喝杯茶么?

你可能感兴趣的:(Android,android,java,安卓,sdk,unity)