uniapp接入安卓端极光推送离线打包

1. 极光key准备 去极光推送开放平台直接注册就好

申请时需要注意离线打包包名

2.uniapp离线包准备

2.1注意两个都需要下载

下载地址:极光推送 JPush 官方 SDK

下载地址:极光推送 JCore 官方 SDK

2.2两个离线包放入uniapp根目录的nativeplugins文件夹下没有就创建

2.3 manifest.json模块中选原生插件选中,最下面那个不用勾那是商米一体机打印插件

切换到安卓模块配置 勾选Push但是切记下面的俩不能勾选

2.4切换到源码模式配置极光key以及打包包名


2.5编写代码初始化极光在App.vue中

js 复制代码
// #ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin('JG-JPush');
// #endif
//在onMounted中或者onLaunch中
// #ifdef APP-PLUS
jpushModule.initJPushService();
jpushModule.setLoggerEnable(true);
jpushModule.addConnectEventListener((result) => {
    console.log(result, 'addConnectEventListener');
    let connectEnable = result.connectEnable;
    uni.$emit('connectStatusChange', connectEnable);
});

jpushModule.addNotificationListener((result) => {
    let notificationEventType = result.notificationEventType;
    let messageID = result.messageID;
    let title = result.title;
    let content = result.content;
    let extras = result.extras;
    console.log('addNotificationListener:', result);
    // uni.showToast({
    //     icon: 'none',
    //     title: JSON.stringify(result),
    //     duration: 3000
    // });
    if (notificationEventType == 'notificationOpened') {
        // uni.navigateTo({
        //     url: '/pages/index/jump'
        // });
    }
});

jpushModule.addCustomMessageListener((result) => {
    let type = result.type;
    let messageType = result.messageType;
    let content = result.content;
    console.log(result, 'addCustomMessageListener');
    // uni.showToast({
    //     icon: 'none',
    //     title: JSON.stringify(result),
    //     duration: 3000
    // });
});
jpushModule.addInMessageListener((result) => {
    // uni.showToast({
    //     icon: 'none',
    //     title: JSON.stringify(result),
    //     duration: 3000
    // });
    console.log(result, 'addInMessageListener');
});
jpushModule.addLocalNotificationListener((result) => {
    let messageID = result.messageID;
    let title = result.title;
    let content = result.content;
    let extras = result.extras;
    console.log(result, 'resultaddLocalNotificationListener');
    // uni.showToast({
    //     icon: 'none',
    //     title: JSON.stringify(result),
    //     duration: 3000
    // });
});
//#endif

2.6准备工作完成开始打包放入安卓项目目录

选择发行--app本地打包-完成之后将文件放到离线打包项目中src/main/assets/apps目录下

uniapp离线打包还需其他配置具体参照里面有现成的例子直接拿过来根据教程改巴改巴
uniapp离线打包官网教程

3.android studio准备工作

3.1将从上面下载下来的两个插件目录以及子目录中的jar包跟arr包全部放入安卓目录下的libs目录中。注意是全部别丢包!!!

3.2在assets目录下创建dcloud_uniplugins.json文件具体原因看官网

Android 离线打包使用插件

json 复制代码
//编写
{
  "nativePlugins": [
    {
      "plugins": [
        {
          "type": "module",
          "name": "JG-JCore",
          "class": "cn.jiguang.uniplugin_jcore.JCoreModule"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": "19",
      "permissions": [],
      "abis": [
        "armeabi-v7a",
        "arm64-v8a",
        "x86"
      ],
      "parameters": {
        "JPUSH_APPKEY_ANDROID": {
          "des": "[Android]极光portal配置应用信息时分配的AppKey",
          "key": "换成极光申请的key"
        },
        "JPUSH_CHANNEL_ANDROID": {
          "des": "[Android]用于统计分发渠道,不需要可填默认值developer-default",
          "key": "developer-default"
        }
      }
    },
    {
      "plugins": [
        {
          "type": "module",
          "name": "JG-JPush",
          "class": "cn.jiguang.uniplugin_jpush.JPushModule"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": "19",
      "permissions": [
        "${applicationId}.permission.JPUSH_MESSAGE",
        "android.permission.INTERNET",
        "android.permission.ACCESS_NETWORK_STATE",
        "android.permission.POST_NOTIFICATIONS",
        "com.huawei.android.launcher.permission.CHANGE_BADGE",
        "com.vivo.notification.permission.BADGE_ICON",
        "com.hihonor.android.launcher.permission.CHANGE_BADGE",
        "android.permission.VIBRATE",
        "android.permission.ACCESS_COARSE_LOCATION",
        "android.permission.ACCESS_FINE_LOCATION",
        "android.permission.ACCESS_BACKGROUND_LOCATION",
        "android.permission.READ_PHONE_STATE",
        "android.permission.QUERY_ALL_PACKAGES",
        "android.permission.GET_TASKS",
        "android.permission.ACCESS_WIFI_STATE",
        "android.permission.WRITE_EXTERNAL_STORAGE",
        "android.permission.READ_EXTERNAL_STORAGE",
        "${applicationId}.permission.MIPUSH_RECEIVE",
        "com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE",
        "com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"
      ]
    }
  ]
}

3.3AndroidManifest.xml目录下编写

xml 复制代码
都是权限
在manifest层级下
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.JPUSH_MESSAGE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
application层级下
<!-- 这是uniapp离线打包申请的key-->
<meta-data
  android:name="dcloud_appkey"
    android:value="更换dcloud_appkey" />
<!-- since 3.3.0 Required SDK 核心功能-->
<!-- 可配置android:process参数将PushService放在其他进程中 -->
<!--User defined.  For test only 继承自cn.jpush.android.service.JCommonService-->
<service android:name="io.dcloud.feature.jpush.PushService"
    android:process=":pushcore" android:exported="true">
    <intent-filter>
        <action android:name="cn.jiguang.user.service.action" />
    </intent-filter>
</service>

<meta-data android:name="dcloud_uninview_background"
    android:value="true"/>

<!-- User defined.  For test only  用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调-->
<!--since 3.3.0 接收JPush相关事件-->
<receiver android:name="io.dcloud.feature.jpush.PushMessageReceiver" android:exported="true">
    <intent-filter>
        <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
        <category android:name="换成安卓包名即applicationId"></category>
    </intent-filter>
</receiver>
<receiver
    android:name="io.dcloud.feature.jpush.JPushReceiver"
    android:enabled="true"
    android:exported="false">
    <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!-- Required 用户注册SDK的 intent -->
        <action android:name="cn.jpush.android.intent.UNREGISTRATION" />
        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!-- Required 用户接收SDK消息的 intent -->
        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- Required 用户接收SDK通知栏信息的 intent -->
        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!-- Required 用户打开自定义通知栏的 intent -->
        <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" /> <!-- Optional 用户接受 Rich Push Javascript 回调函数的intent -->
        <action android:name="cn.jpush.android.intent.CONNECTION" /> <!-- 接收网络变化 连接/断开 since 1.6.3 -->
        <category android:name="${JPUSH_PKGNAME}" />
    </intent-filter>
</receiver>
<meta-data
    android:name="JPUSH_APPKEY"
    android:value="换成自己的极光key"/>

3.4build.gradle中编写ndk选项以及manifestPlaceholders

3.5在src/main/assets/data/dcloud_properties中加入一行

xml 复制代码
<feature name="Push" value="io.dcloud.feature.jpush.JPushService"></feature>

完事直接执行打包

注意事项

uniapp离线打包现在需要申请key(uniapp教程中有),里面需要sha1值跟sha256,

android sudio中可以创建签名使用命令即可得到签名的sha1跟256(自行百度吧)

相关推荐
Zhu7588 小时前
在k8s集群部署MySQL单实例,支持多个主流发行版
android·mysql·kubernetes
AFinalStone11 小时前
Android 7系统异常问题排查(四)Framework层(上)—System Server Watchdog
android·系统异常
宝杰X713 小时前
Android Room3 多平台数据库
android·数据库
huibin14785236915 小时前
热缓解学习记录
android·学习
小田的博客18 小时前
SAP MM 供应商银行主数据更新报错!message R1228!
android·java·服务器
一笑的小酒馆19 小时前
Android智能猫砂盆视频加载慢卡顿问题分析
android
2501_9160088921 小时前
移动安全之 APP 加固,保障移动应用安全的重要手段
安全·macos·ios·小程序·uni-app·iphone·xcode
只会cv的小前端21 小时前
七巧低代码服务端脚本使用方法
android·低代码·rxjava
21 小时前
Android 自定义 View 实战:从零打造工业级全向摇杆控件(OmniJoystickView)
android·kotlin·自定义view·摇杆控件
雨白21 小时前
深入理解 Kotlin 协程 (十一):以逸待劳,探秘 select 多路复用与并发安全策略
android·kotlin