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(自行百度吧)

相关推荐
Mr_li9 小时前
给 Vue 开发者的 uni-app 快速指南
vue.js·uni-app
anyup12 小时前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
阿巴斯甜15 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker15 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952716 小时前
Andorid Google 登录接入文档
android
黄林晴18 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android