因为小黑是一名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)

2、下载Android的SDK:

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

接着我们创建自己的应用 

递交信息

我们下一步

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

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


二、创建AS项目

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

1、导入SDK:

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

2、配置SDK:

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

  1. jcenter()
  2. mavenCentral()

我们按个来啊

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

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

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

3、然后把我们要用到推送的地方,哪一个模块用就在那个模块下的build.gradle中添加配置。

4、接着在implementation project(':jiguang')同一个module中的AndroidManifest.xml中,添加配置,兵且按照要求,去继承该继承的类。

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

  1. package com.nativeai.pushai.push;
  2. import cn.jpush.android.service.JCommonService;
  3. public class PushService extends JCommonService { }

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

代码会放到下方,争取让AS小白也能迅速接入极光推送。

  1. package com.nativeai.pushai.push;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.util.Log;
  5. import cn.jpush.android.api.CmdMessage;
  6. import cn.jpush.android.api.CustomMessage;
  7. import cn.jpush.android.api.JPushInterface;
  8. import cn.jpush.android.api.JPushMessage;
  9. import cn.jpush.android.api.NotificationMessage;
  10. import cn.jpush.android.service.JPushMessageReceiver;
  11. public class PushReceiver extends JPushMessageReceiver {
  12.     private static final String TAG = "PushMessageReceiver";
  13. @Override
  14. public void onMessage(Context context, CustomMessage customMessage) {
  15.   Log.e(TAG, "[onMessage] " + customMessage);   
  16. }
  17. @Override
  18. public void onNotifyMessageOpened(Context context, NotificationMessage message) {   
  19.       Log.e(TAG, "[onNotifyMessageOpened] " + message);   
  20.     }
  21. @Override
  22. public void onMultiActionClicked(Context context, Intent intent) {
  23.       Log.e(TAG, "[onMultiActionClicked] 用户点击了通知栏按钮");  
  24.       String nActionExtra = intent.getExtras().getString(JPushInterface.EXTRA_NOTIFICATION_ACTION_EXTRA);  
  25.       //开发者根据不同 Action 携带的 extra 字段来分配不同的动作。
  26.       if (nActionExtra == null) {      
  27.         Log.d(TAG, "ACTION_NOTIFICATION_CLICK_ACTION nActionExtra is null");
  28.         return;
  29.       }
  30.       if (nActionExtra.equals("my_extra1")) {
  31.         Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮一");
  32.       }
  33.       else if (nActionExtra.equals("my_extra2")) {  
  34.         Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮二");   
  35.       }
  36.       else if (nActionExtra.equals("my_extra3")) { 
  37.         Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮三");   
  38.       }
  39.       else {   
  40.         Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮未定义");  
  41.       }  
  42.     }
  43. @Override
  44. public void onNotifyMessageArrived(Context context, NotificationMessage message) {
  45.       Log.e(TAG, "[onNotifyMessageArrived] " + message);  
  46.     }
  47. @Override
  48. public void onNotifyMessageDismiss(Context context, NotificationMessage message) {  
  49.       Log.e(TAG, "[onNotifyMessageDismiss] " + message);  
  50.     }
  51. @Override
  52. public void onRegister(Context context, String registrationId) {
  53.       Log.e(TAG, "[onRegister] " + registrationId);
  54.       //Intent intent = new Intent("com.jiguang.demo.register"); 
  55.       //context.sendBroadcast(intent);
  56.     }
  57. @Override
  58. public void onConnected(Context context, boolean isConnected) {   
  59.       Log.e(TAG, "[onConnected] " + isConnected);
  60.     }
  61. @Override
  62. public void onCommandResult(Context context, CmdMessage cmdMessage) { 
  63.       Log.e(TAG, "[onCommandResult] " + cmdMessage);
  64.     }
  65. @Override
  66. public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {  
  67.       Log.e("push: ",":-----------------:      "   + jPushMessage);  
  68.       super.onTagOperatorResult(context, jPushMessage);
  69.     }
  70. @Override
  71. public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
  72.       Log.e("push: ",":-----------------:      "   + jPushMessage);   
  73.       super.onCheckTagOperatorResult(context, jPushMessage);
  74.     }
  75. @Override
  76. public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {  
  77.       Log.e("push: ",":-----------------:      "   + jPushMessage);  
  78.       super.onAliasOperatorResult(context, jPushMessage);
  79.     }
  80. @Override
  81. public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
  82.       Log.e("push: ",":-----------------:      "   + jPushMessage);  
  83.       super.onMobileNumberOperatorResult(context, jPushMessage);
  84.     }
  85. @Override
  86. public void onNotificationSettingsCheck(Context context, boolean isOn, int source) {  
  87.       super.onNotificationSettingsCheck(context, isOn, source);  
  88.       Log.e(TAG, "[onNotificationSettingsCheck] isOn:" + isOn + ",source:" + source);
  89.     }
  90. }

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

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

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

让我们查看结果:

安装查看log,首先是初始化成功了,那么我们接着检查是否能接收到推送

然后我们创建推送

这是网页上的,我们看看手机上效果,小米截屏没用明白,卡了个音量。。不要在意

可以看到,我们的推送消息成功了,并且极光官网也给了反馈,说你就一个目标,你推送成功了1个。。。All

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

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

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

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

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

于是小黑又看到了新希望,赶快去尝试一下,所以代码变成了,并且迫不及待地重新build,查看codema

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

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

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

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

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

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

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

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

结束

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

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

唠家常

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

今日无推荐

Android原生集成JPush SDK的更多相关文章

  1. 《Android原生整合虹软SDK开发uniapp插件》

    1.项目背景 应公司要求,需要开发一套类似人脸打卡功能的app,但是因为我们公司没有很强的原生android开发者,所以根据现状选择了第三方跨平台的uniapp,想必目前大多人都了解这个平台了,我也就 ...

  2. 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco

    Android studio 集成极光推送(Jpush) (华为手机)报错, E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!] W/Sy ...

  3. Android消息推送 SDK 集成指南

    使用提示 本文是 Android SDK 标准的集成指南文档. 匹配的 SDK 版本为:r1.8.0及以后版本. 本文随SDK压缩包分发.在你看到本文时,可能当前的版本与本文已经不是很适配.所以建议关 ...

  4. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  5. Android集成JPush极光推送

    推送原理 参考网址:https://blog.csdn.net/huangli1466384630/article/details/79889473 SDK下载 https://docs.jiguan ...

  6. Android集成JPush(极光推送)

    目前只是简单的集成 1.在极光推送官网注册用户 2.创建应用 3.配置包名,获得APPKEY 去设置 输入应用包名 确定然后返回查看APPKEY 3.在应用中集成极光推送 用的jcenter自动集成的 ...

  7. Springboot项目集成JPush极光推送(Java SDK)

    1.由于项目的需求,需要在Android APP上实现消息推送功能,所以引用了极光推送(官网:https://www.jiguang.cn/, 文档:http://docs.jiguang.cn/) ...

  8. 将React Native集成至Android原生应用

    将React Native集成至Android原生应用 Android Studio 2.1 Preview 4生成的空项目 react-native 环境 0.22.2 初次编译后apk有1.1M, ...

  9. AndroidStudio离线打包MUI集成JPush极光推送并在java后端管理推送

    1.AndroidStudio离线打包MUI 如何离线打包请参看上篇随笔<AndroidStudio离线打包MUI> 2.集成极光推送 官方文档:https://docs.jiguang. ...

随机推荐

  1. Java Stream流的使用

    流相关的方法可以分为三种类型,分别是:获取Stream流.中间方法.终结方法.中间方法会返回当前流,可以方便的进行链式调用. 流不可重复使用,否则会报错: java.lang.IllegalState ...

  2. Spark简单介绍,Windows下安装Scala+Hadoop+Spark运行环境,集成到IDEA中

    一.前言 近几年大数据是异常的火爆,今天小编以java开发的身份来会会大数据,提高一下自己的层面! 大数据技术也是有很多: Hadoop Spark Flink 小编也只知道这些了,由于Hadoop, ...

  3. appium 移动端自动化测试工具

    appium 移动端自动化测试工具 appium 移动端自动化测试工具 appium 是哟个自动化测试开源工具 支持ios和安卓平台的应用 以及web应用和混合应用 appium 是一个跨平台的工具: ...

  4. C# 9.0 添加和增强的功能【基础篇】

    一.记录(record) C# 9.0 引入了记录类型. 可使用 record 关键字定义一个引用类型,以最简的方式创建不可变类型.这种类型是线程安全的,不需要进行线程同步,非常适合并行计算的数据共享 ...

  5. Python基础部分:3、 pycharm的下载与使用

    目录 pycharm下载与使用 一.软件说明 二.版本说明 三.如何免费使用正式版软件 四.pycharm运行空间 五.文件后缀名 六.安装pycharm工具 七.pycharm的基本配置和PY文件的 ...

  6. python枚举类型 Enum

    在python中枚举是一种类(Enum) 枚举类中不能存在相同的标签名 枚举是可迭代的 例: from enum import Enum class Vip(Enum): MONDAY = 0 TUE ...

  7. civil3d安装教程2022序列号和密钥

    Civil3D2021 WIN10 64位安装步骤:1.先使用"百度网盘客户端"下载C3D21_CN_x64软件安装包到电脑磁盘里,并右击进行解压,安装前先断网,然后找到Autod ...

  8. dfs 序

    dfs序可以\(O(1)\)判断书上两个点的从属关系 Tree Queries 题面翻译 给你一个以\(1\)为根的有根树. 每回询问\(k\)个节点\({v_1, v_2 \cdots v_k}\) ...

  9. Django 连接各数据库配置汇总(sqlite3,MySql,Oracle)

    在django中,默认配置的数据库是 sqlite3 # Database # https://docs.djangoproject.com/en/2.0/ref/settings/#database ...

  10. 利用WordPress搭建属于自己的网站

    怎么用WordPress给自己搭建了一个网站?可能很多人都想拥有属于自己的网站,这篇文章就找你怎么利用WordPress搭建属于自己的网站.如果你也正好有搭建个人网站的想法,那么本文会给你一个参考,我 ...