更新记录

1.2.7(2024-03-02)

修复问题

1.2.4(2024-02-23)

增加 iOS 端隐私协议调用功能,避免 iOS crash。老版本没问题因为老版本 uniapp 用的是老的高德 sdk,无需调用隐私协议

1.2.3(2022-10-13)

iOS返回数据完善

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


PowPlugin持续定位插件

  1. 需要使用uniapp官方工程创建模板,在manifest.json - APP模块配置 - 定位 中,勾选高德定位,并且配置自己APP对应的安卓和iOS高德key
  2. 不包含单次定位接口,请使用uniapp官方接口
  3. 高德要求,一定要在定位之前调用以下两个高德隐私政策接口:
    PowModule.updatePrivacyShow({},()=>{})
    PowModule.updatePrivacyAgree({},()=>{})
  1. 调用方法如下:

    <script>
    const PowModule = uni.requireNativePlugin("Pow-Plugin")
    export default {
        methods: {
            demoPrivacyThings(){
                console.log(`pow-before-privacyThings`)
                PowModule.updatePrivacyShow({},()=>{})
                PowModule.updatePrivacyAgree({},()=>{})
            },
            demoStartLocation(){
                console.log(`pow-before-location`)
                // 可以多次调用,regeo和interval参数以最后一次调用时为准
                PowModule.startUpdatingLocation({'regeo':true, 'interval':1000, 'enable_bg':true},(ret)=>{
                    if(ret.errCode != null && ret.errCode != 0 || ret.longitude == null){
                        // 用户首次打开未授权,或者用户拒绝授权,的情况下,回调都会走到这里,用户点击授权弹窗允许权限之后,会返回正确位置信息,用户授权后无需重复调用`startUpdatingLocation`
                        console.log(`pow-locationRes- 缺少位置权限`) 
                    }else{
                        // 用户授权后正常返回
                        console.log(`pow-locationRes-ret:${JSON.stringify(ret)}`)
                    }
                })
            },
            demoStopLocation(){
                console.log(`pow-stop-location`)
                PowModule.stopUpdatingLocation()
            }
    
        }
    }
    </script>
  2. startLocation接口支持参数:
    • regeo 是否需要逆地理信息,默认false
    • interval 持续定位间隔,单位ms,安卓最小 1000 ,iOS无限制
    • enable_bg 是否开启后台定位
  3. 安卓后台定位需要
    1. 在uniapp项目根目录添加 AndroidManifest.xml ,在 application 标签下配置 service 标签 com.amap.api.location.APSService
    2. 在uniapp权限设置里面添加<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>和其它高德指定的uses-permission
    3. 高德文档:https://lbs.amap.com/api/android-location-sdk/gettingstarted#t4https://lbs.amap.com/api/android-location-sdk/guide/utilities/permision_9
    4. uniapp打包安卓配置manifest方法: https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions

完整的AndroidManifest.xml示例如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
    package="app的包名">
    <application>
        <service android:name="com.amap.api.location.APSService" />
    </application>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
  1. 不少朋友咨询怎么不生效,后来参考如下示例的manifest配置就好了:

    
    {
    "name" : "airport-on-uni-pad",
    "appid" : "__UNI__F07C1",
    "description" : "",
    "versionName" : "1.0.0",
    "versionCode" : 101,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
        "usingComponents" : true,
        "nvueStyleCompiler" : "uni-app",
        "compilerVersion" : 3,
        "splashscreen" : {
            "alwaysShowBeforeRender" : true,
            "waiting" : true,
            "autoclose" : true,
            "delay" : 0
        },
        /* 模块配置 */
        "modules" : {
            "Geolocation" : {},
            "Maps" : {}
        },
        /* 应用发布信息 */
        "distribute" : {
            /* android打包配置 */
            "android" : {
                "permissions" : [
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                    "<uses-feature android:name=\"android.hardware.camera\"/>"
    
                ]
            },
            /* ios打包配置 */
            "ios" : {
                "privacyDescription" : {
                    "NSLocationWhenInUseUsageDescription" : "111",
                    "NSLocationAlwaysUsageDescription" : "222",
                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "333"
                },
                "dSYMs" : false,
                "UIBackgroundModes" : "location"
            },
            /* SDK配置 */
            "sdkConfigs" : {
                "geolocation" : {
                    "amap" : {
                        "__platform__" : [ "ios", "android" ],
                        "appkey_ios" : "9428498ddb1d534db3b4c94cfc08dd",
                        "appkey_android" : "d4aeaaf4b921a2d4b4210d91b09170"
                    },
                    "system" : {
                        "__platform__" : [ "ios", "android" ]
                    }
                },
                "maps" : {
                    "amap" : {
                        "appkey_ios" : "942849d81b1d534db3b4c94cfc08dd",
                        "appkey_android" : "d4ae3ef4b921a2d4b4210d91b09170"
                    }
                },
                "ad" : {}
            }
        },
        "nativePlugins" : {
            "Pow-Plugin" : {
                "__plugin_info__" : {
                    "name" : "¥18.88 高德持续定位插件,支持iOS和安卓",
                    "description" : "持续定位插件,通过vue代码直接调用原生高德持续定位接口,支持iOS和安卓,联系QQ:",
                    "" : "Android,iOS",
                    "url" : "https://ext.dcloud.net.cn/plugin?id=7310",
                    "android_package_name" : "uni.UNI68",
                    "ios_bundle_id" : "com.",
                    "isCloud" : true,
                    "bought" : 1,
                    "pid" : "7310",
                    "parameters" : {}
                }
            }
        }
    },
    /* 快应用特有相关 */
    "quickapp" : {},
    /* 小程序特有相关 */
    "mp-weixin" : {
        "appid" : "",
        "setting" : {
            "urlCheck" : false
        },
        "usingComponents" : true
    },
    "mp-alipay" : {
        "usingComponents" : true
    },
    "mp-baidu" : {
        "usingComponents" : true
    },
    "mp-toutiao" : {
        "usingComponents" : true
    },
    "uniStatistics" : {
        "enable" : false
    },
    "vueVersion" : "2"
    }

隐私、权限声明

1. 本插件需要申请的系统权限列表:

插件本身不申请任何系统权限 插件依赖的高德需要使用到的权限: 安卓: <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--用于获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--用于写入缓存数据到扩展存储卡--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!--如果设置了target >= 28 如果需要启动后台定位则必须声明这个权限--> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <!--如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明--> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/> iOS: Privacy - Location Always and When In Use Usage Description Privacy - Location When In Use Usage Description Privacy - Location Always Usage Description

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件本身不采集任何数据 插件依赖的第三方高德定位SDK,参考其官方网站 https://lbs.amap.com 插件定位功能使用高德定位SDK,开始定位时需要获取设备位置信息信息用于定位接口实现,其隐私协议参考 https://lbs.amap.com/pages/privacy

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问