文章目录

  • 一、先在uniapp的插件市场下载
  • 二、本地插件配置(可在控制台看到打印信息,方便测试)
  • 1.配置本地插件信息
  • 1.1 厂商信息需要在各个厂商注册后,然后填写,用处为:可在离线时,发送通知。
  • 1.2 在本地插件的page.json中,配置安卓和ios的[appKey](https://www.jiguang.cn/portal/#/dev/newOverview)和厂商id(若不配置,仅支持在线通知):
  • 2.配置manifest.json信息
  • 在manifest.json的源码视图中配置如下信息:
  • 1、2、3步代码保持一致,4、5步填写ios、安卓对应的appkey
  • 7、8、11、12配置安卓和ios的appKey,9,10配置安卓的包名和ios的bundle_id
  • 下面的`JG-JPush`配置相同,就不一一列举。
  • 3.配置自定义基座包(Android、iOS)
  • 4.运行测试
  • 三、离线打包集成(安卓,官方参考文档)
  • 四、官方demo和API文档



一、先在uniapp的插件市场下载

点击直达

二、本地插件配置(可在控制台看到打印信息,方便测试)

1.配置本地插件信息

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk

1.1 厂商信息需要在各个厂商注册后,然后填写,用处为:可在离线时,发送通知。

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_02

1.2 在本地插件的page.json中,配置安卓和ios的appKey和厂商id(若不配置,仅支持在线通知):

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_03

2.配置manifest.json信息

在manifest.json的源码视图中配置如下信息:

1、2、3步代码保持一致,4、5步填写ios、安卓对应的appkey

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_04

/* android打包配置 */
            "android" : {
                "permissions" : [
                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                ],
                "abiFilters" : [ "armeabi-v7a", "x86" ]
            },
            /* ios打包配置 */
            "ios" : {
                "privacyDescription" : {
                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "This app requires location services to work",
                    "NSLocationAlwaysUsageDescription" : "This app requires location services to work",
                    "NSLocationWhenInUseUsageDescription" : "This app requires location services to work"
                },
                "UIBackgroundModes" : "remote-notification,voip,fetch,location",
                "idfa" : true
            },
            /* ios打包配置 */
            "sdkConfigs" : {
                "ad" : {},
                "push" : {},
                "geolocation" : {},
                "maps" : {}
            },

7、8、11、12配置安卓和ios的appKey,9,10配置安卓的包名和ios的bundle_id

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_05

下面的JG-JPush配置相同,就不一一列举。

再放一段参考代码:

"nativePlugins" : {
            "JG-JCore" : {
                "JPUSH_APPKEY_ANDROID" : "appkey注册时获取",
                "JPUSH_APPKEY_IOS" : "appkey注册时获取",
                "JPUSH_CHANNEL_IOS" : "developer-default",
                "JPUSH_CHANNEL_ANDROID" : "developer-default",
                "__plugin_info__" : {
                    "name" : "JG-JCore",
                    "description" : "极光推送JCore插件",
                    "platforms" : "Android,iOS",
                    "url" : "",
                    "android_package_name" : "com.xxx.com",
                    "ios_bundle_id" : "com.xxxaaa.com",
                    "isCloud" : false,
                    "bought" : -1,
                    "pid" : "",
                    "parameters" : {
                        "JPUSH_APPKEY_ANDROID" : {
                            "des" : "appkey注册时获取",
                            "key" : "JPUSH_APPKEY",
                            "value" : "appkey"
                        },
                        "JPUSH_APPKEY_IOS" : {
                            "des" : "appkey注册时获取",
                            "key" : "JCore:APP_KEY",
                            "value" : "appkey"
                        },
                        "JPUSH_CHANNEL_IOS" : {
                            "des" : "developer-default",
                            "key" : "JCore:CHANNEL",
                            "value" : "developer-default"
                        },
                        "JPUSH_CHANNEL_ANDROID" : {
                            "des" : "developer-default",
                            "key" : "JPUSH_CHANNEL",
                            "value" : "developer-default"
                        }
                    }
                }
            },
            "JG-JPush" : {
                "JPUSH_XIAOMI_APPKEY" : "",
                "JPUSH_MEIZU_APPID" : "",
                "JPUSH_OPPO_APPSECRET" : "",
                "JPUSH_OPPO_APPKEY" : "",
                "JPUSH_ADVERTISINGID_IOS" : "",
                "JPUSH_MEIZU_APPKEY" : "",
                "JPUSH_OPPO_APPID" : "",
                "JPUSH_DEFAULTINITJPUSH_IOS" : "",
                "JPUSH_VIVO_APPKEY" : "",
                "JPUSH_VIVO_APPID" : "",
                "JPUSH_ISPRODUCTION_IOS" : "false",
                "JPUSH_XIAOMI_APPID" : "",
                "JPUSH_HUAWEI_APPID" : "",
                "__plugin_info__" : {
                    "name" : "JG-JPush",
                    "description" : "极光推送Hbuilder插件",
                    "platforms" : "Android,iOS",
                    "url" : "",
                    "android_package_name" : "com.xxx.com",
                    "ios_bundle_id" : "com.xxxaaa.com",
                    "isCloud" : false,
                    "bought" : -1,
                    "pid" : "",
                    "parameters" : {
                        "JPUSH_XIAOMI_APPKEY" : {
                            "des" : "",
                            "key" : "XIAOMI_APPKEY",
                            "value" : ""
                        },
                        "JPUSH_MEIZU_APPID" : {
                            "des" : "",
                            "key" : "MEIZU_APPID",
                            "value" : ""
                        },
                        "JPUSH_OPPO_APPSECRET" : {
                            "des" : "",
                            "key" : "OPPO_APPSECRET",
                            "value" : ""
                        },
                        "JPUSH_OPPO_APPKEY" : {
                            "des" : "",
                            "key" : "OPPO_APPKEY",
                            "value" : ""
                        },
                        "JPUSH_ADVERTISINGID_IOS" : {
                            "des" : "",
                            "key" : "JPush:ADVERTISINGID",
                            "value" : ""
                        },
                        "JPUSH_MEIZU_APPKEY" : {
                            "des" : "",
                            "key" : "MEIZU_APPKEY",
                            "value" : ""
                        },
                        "JPUSH_OPPO_APPID" : {
                            "des" : "",
                            "key" : "OPPO_APPID",
                            "value" : ""
                        },
                        "JPUSH_DEFAULTINITJPUSH_IOS" : {
                            "des" : "false",
                            "key" : "JPush:DEFAULTINITJPUSH",
                            "value" : ""
                        },
                        "JPUSH_VIVO_APPKEY" : {
                            "des" : "",
                            "key" : "com.vivo.push.api_key",
                            "value" : ""
                        },
                        "JPUSH_VIVO_APPID" : {
                            "des" : "",
                            "key" : "com.vivo.push.app_id",
                            "value" : ""
                        },
                        "JPUSH_ISPRODUCTION_IOS" : {
                            "des" : "false",
                            "key" : "JPush:ISPRODUCTION",
                            "value" : ""
                        },
                        "JPUSH_XIAOMI_APPID" : {
                            "des" : "",
                            "key" : "XIAOMI_APPID",
                            "value" : ""
                        },
                        "JPUSH_HUAWEI_APPID" : {
                            "des" : "",
                            "key" : "com.huawei.hms.client.appid",
                            "value" : ""
                        }
                    }
                }
            }
        }

3.配置自定义基座包(Android、iOS)

iOS打包勾选上后修改bundle id并且上传证书即可

uniapp集成Androidsdk uniapp集成原生第三方sdk_android_06


uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_07

4.运行测试

选择自定义基座–>选择与电脑连接的手机设备(或者模拟器)–>点击运行

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_08

三、离线打包集成(安卓,官方参考文档)

ios可参考这个博客

1、生成离线打包资源
1.在菜单栏中选中 “发行” --> “原生App-本地打包” --> “生成本地打包App资源”

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_09

2.在项目目录下的"unpackage" --> "resources"目录下会生成资源文件

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_10

2、下载离线打包SDK

2.1 下载地址

https://nativesupport.dcloud.net.cn/AppDocs/download/android 注意:SDK版本需要与HbuilderX版本对应才能正常运行项目,否则可能造成兼容问题。

2.2 查看HbuilderX版本

在菜单栏中选点击 “帮助”–>“关于”,查看弹窗即可看到版本号

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_11

2.3 下载SDK

下载跟自己HBuilderX版本号相同的SDK

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_12

3、离线打包工程配置

3.1 打开 UniPlugin-Hello-AS 工程

使用Android Stuido打开UniPlugin-Hello-AS工程

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_13

3.2 导入离线打包资源

将项目中app/src/main/assets/apps/目录下的文件删除,并且替换为HBuilderX中生成的离线打包资源

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_14

3.3 修改dcloud_control.xml

将dcloud_control.xml中的appid修改成与离线打包资源文件夹同名

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_15

3.4 删除无用模块

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_16

4、集成推送插件

4.1 修改applicationId

将app/build.gradle文件中的applicationId修改为认证时申请的包名

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_17

将AndroidManifest.xml中的package修改为认证时申请的包名

uniapp集成Androidsdk uniapp集成原生第三方sdk_android_18

4.2 配置打包签名文件
在app/build.gradle中的android{}里面添加签名信息(使用自己的签名文件或者云端证书都可)

signingConfigs {
        release {
            keyAlias 'push'
            keyPassword '123456'
            storeFile file('./push.jks')
            storePassword '123456'
        }

        debug {
            keyAlias 'push'
            keyPassword '123456'
            storeFile file('./push.jks')
            storePassword '123456'
        }
 }

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_19

在app/build.gradle中的buildTypes{}里面添加打包时指定的签名文件

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
}

uniapp集成Androidsdk uniapp集成原生第三方sdk_ios_20

4.3 配置插件信息
打开dcloud_uniplugins.json文件填写插件信息
插件信息在HBuilderX项目nativeplugins/JG-JCore/package.json、nativeplugins/JG-JPush/package.json中查看

{
  "nativePlugins": [
    {
      "plugins": [
        {
          "type": "module",
          "name": "JG-JCore",
          "class": "cn.jiguang.uniplugin_jcore.JCoreModule"
        },
        {
          "type": "module",
          "name": "JG-JPush",
          "class": "cn.jiguang.uniplugin_jpush.JPushModule"
        }
      ],
      "integrateType": "aar",
      "minSdkVersion": "16"
    }
  ]
}

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_21

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_22

uniapp集成Androidsdk uniapp集成原生第三方sdk_android_23

4.4 导入推送插件依赖库

将JPush_Hbuilder_Demo中的依赖包复制到UniPlugin-Hello-AS项目中的app/libs目录下

uniapp集成Androidsdk uniapp集成原生第三方sdk_uniapp集成Androidsdk_24

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_25

4.5 配置极光和厂商参数
注意:以下参数替换为自己的参数

manifestPlaceholders = [
                JPUSH_PKGNAME : "pub.kilo.thirdpush",
                JPUSH_APPKEY  : "xx", //JPush 上注册的包名对应的 Appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
                XIAOMI_APPKEY : "MI-xx",//小米平台注册的appkey
                XIAOMI_APPID  : "MI-xx",//小米平台注册的appid
                OPPO_APPKEY   : "OP-xx", // OPPO平台注册的appkey
                OPPO_APPID    : "OP-xx", // OPPO平台注册的appid
                OPPO_APPSECRET: "OP-xx",//OPPO平台注册的appsecret
                VIVO_APPKEY   : "xx", // VIVO平台注册的appkey
                VIVO_APPID    : "xx", // VIVO平台注册的appid
                MEIZU_APPKEY  : "MZ-xx", // 魅族平台注册的appkey
                MEIZU_APPID   : "MZ-xx", // 魅族平台注册的appid
]
<meta-data
	android:name="JPUSH_APPKEY"
	android:value="${JPUSH_APPKEY}" />
<meta-data
	android:name="JPUSH_CHANNEL"
	android:value="${JPUSH_CHANNEL}" />

<meta-data
	android:name="XIAOMI_APPKEY"
	android:value="${XIAOMI_APPKEY}" />
<meta-data
	android:name="XIAOMI_APPID"
	android:value="${XIAOMI_APPID}" />

<meta-data
	android:name="OPPO_APPKEY"
	android:value="${OPPO_APPKEY}" />
<meta-data
	android:name="OPPO_APPID"
	android:value="${OPPO_APPID}" />
<meta-data
	android:name="OPPO_APPSECRET"
	android:value="${OPPO_APPSECRET}" />

<meta-data
	android:name="com.vivo.push.api_key"
	android:value="${VIVO_APPKEY}" />
<meta-data
	android:name="com.vivo.push.app_id"
	android:value="${VIVO_APPID}" />

<meta-data
	android:name="MEIZU_APPKEY"
	android:value="${MEIZU_APPKEY}" />
<meta-data
	android:name="MEIZU_APPID"
	android:value="${MEIZU_APPID}" />

uniapp集成Androidsdk uniapp集成原生第三方sdk_android_26

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_27

4.6 登录开发者中心申请签名

1)开发者需登录 https://dev.dcloud.net.cn/ 申请签名,申请签名成功后会显示 AppKey

uniapp集成Androidsdk uniapp集成原生第三方sdk_android_28

2)将步骤 1 获取到的 AppKey 配置到 manifest

uniapp集成Androidsdk uniapp集成原生第三方sdk_前端_29

4.7 集成华为和FCM
华为和FCM的集成参考以下文档即可
https://www.yuque.com/docs/share/0f6327ce-da8f-488e-824a-7ca53890252d?# 《极光厂商通道集成指南》
解决fcm集成报AndroidX错误的问题

android.useAndroidX=true
android.enableJetifier=true

uniapp集成Androidsdk uniapp集成原生第三方sdk_ios_30

5、厂商通道点击跳转获取参数问题

(华为/小米/VIVO通道)uri_activity:cn.jiguang.uniplugin_jpush.OpenClickActivity

(OPPO / FCM通道)uri_action: cn.jiguang.uniplugin_jpush.OpenClickActivity

uniapp集成Androidsdk uniapp集成原生第三方sdk_离线_31

四、官方demo和API文档

官方demo : https://github.com/jpush/jpush-hbuilder-plugin API文档 :https://github.com/jpush/jpush-hbuilder-plugin/blob/master/doc/API.md