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

相关推荐
oMcLin6 分钟前
如何在Ubuntu 22.04 LTS上配置并优化MySQL 8.0分区表,提高大规模数据集查询的效率与性能?
android·mysql·ubuntu
幸福的达哥33 分钟前
安卓APP代码覆盖率测试方案
android·代码覆盖率
佛系打工仔43 分钟前
绘制K线入门
android
川石课堂软件测试2 小时前
Android和iOS APP平台测试的区别
android·数据库·ios·oracle·单元测试·测试用例·cocoa
花卷HJ3 小时前
Android 通用 BaseDialog 实现:支持 ViewBinding + 全屏布局 + 加载弹窗
android
生产队队长3 小时前
Linux:awk进行行列转换操作
android·linux·运维
叶羽西3 小时前
Android15 EVS HAL中使用Camera HAL Provider接口
android
2501_915918413 小时前
除了 Perfdog,如何在 Windows 环境中完成 iOS App 的性能测试工作
android·ios·小程序·https·uni-app·iphone·webview
泓博3 小时前
Android状态栏文字图标设置失效
android·composer
丢,捞仔4 小时前
uni-app上架应用添加权限提示框
前端·javascript·uni-app