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

相关推荐
Ayn慢慢2 小时前
uni-app PDA焦点录入实现
前端·javascript·uni-app
在狂风暴雨中奔跑2 小时前
使用MediaRecorder+MediaProjection高效实现Android录屏
android
YoungP2 小时前
让人头疼的AndroidStudio、Gradle、AGP..
android
我命由我123453 小时前
Android WebView - loadUrl 方法的长度限制
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Coffeeee3 小时前
面试被问到Compose的副作用不会,只怪我没好好学
android·kotlin·android jetpack
Greenland_123 小时前
Android Gralde补全计划 productFlavors多渠道打包(变体/多客户)
android
Just_Paranoid3 小时前
【TaskStackListener】Android 中用于监听和响应任务栈
android·ams·task·taskstack
权泽谦3 小时前
从零搭建一个 PHP 登录注册系统(含完整源码)
android·开发语言·php
aaajj4 小时前
android contentprovider及其查看
android