因为小黑是一名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新手,那真的是太不友好了,也不知道学学友盟+的官方文档。。

jcenter()
mavenCentral()

我们按个来啊

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

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

            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中添加配置。

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

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

package com.nativeai.pushai.push; 

import cn.jpush.android.service.JCommonService; 

public class PushService extends JCommonService { } 

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

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

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());

让我们查看结果:

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

然后我们创建推送

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

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

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

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

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

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

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

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

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,大家一起进步。

今日无推荐

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. 用Nodejs 实现一个简单的 Redis客户端

    目录 0. 写在前面 1. 背景映入 2. 数据库选择 3. Nodejs TCP连接 3. 代码编写 4. 实验 5. wireshark 抓包分析 6. 杂与代码 0. 写在前面 大家如果有去看过 ...

  2. 【Virt.Contest】CF1155(div.2)

    CF 传送门 T1:Reverse a Substring 只有本身单调不减的字符串不能转换为字典序更小的字符串.否则肯定会出现 \(s_i>s_{i+1}\) 的情况. 所以只要从头到尾扫一遍 ...

  3. .Net SemaphoreSlim

    看Elsa-core源代码中看到的,Elsa-core中所有保存数据的方法似乎使用同一个Save方法.如下图: 那么为什么要使用这玩意,我还是头一次见这玩意???? 好吧,我承认我自己菜.我自个儿也该 ...

  4. ironic组件硬件自检服务——ironic-inspector

    介绍 ironic-inspector是一个用于硬件自检的辅助型服务,它可以对被ironic组件管理的裸金属节点进行硬件自检,通过在裸金属节点上运行内存系统,发现裸金属节点的硬件信息,例如CPU数量和 ...

  5. windows查看端口和杀掉端口

    //执行下面命令 netstat --help 获取netstat的所有命令参数 //例如查看8080端口占用 netstat -ano | findstr 8080 //查看该端口是什么 taskl ...

  6. htaccess如何配置隐藏index.php文件

    <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{RE ...

  7. Postman使用指导

    1. 下载好Postman,不用注册账号,直接离线使用 2. 软件的配置修改: 2.1关闭SSL认证 2.2关闭系统代理 2.3上传证书填写hosthost为服务器地址和端口:crt和key可以通过国 ...

  8. apt-mirror 制作麒麟桌面版内网源

    apt-mirror 制作麒麟桌面版内网源 一.修改apt软件安装源 1.修改source.list安装源 vi /etc/apt/sources.list 添加: deb http://archiv ...

  9. MICCAI 论文投稿须知翻译

    MICCAI 论文投稿须知翻译 以MICCAI 2021 PAPER SUBMISSION AND REBUTTAL GUIDELINES为例,每年投稿须知类似 作者信息和rebuttal 本文件包含 ...

  10. 【kafka】connect的timestamp模式无法同一秒插入多条记录问题解决

    一.现在问题 同时插入多条时间戳相同的记录 INSERT INTO "ABANK" VALUES ('1', 'CH', '00211', 'UBS Switzerland AG' ...