问题背景
uniapp云打包后生成apk,第一次启动会申请存储权限,用户点击不同意会退出app,而且这个申请是uniapp基座包做的,和开发者写的代码无关,是uniapp基座运行起来就会申请这个权限。
问题原因
uniapp支持增量更新,想要支持热更新就需要存储权限,但是wgt热更新是应用市场不乐见的。
解决方案
在manifest.json中打开源码视图,在‘distribute’下添加
"permissionPhoneState" : {
"request" : "once",
"prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
},
"permissionExternalStorage" : {
"request" : "once",
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
},
本人完整distribute节点如下
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"permissionPhoneState" : {
"request" : "once",
"prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
},
"permissionExternalStorage" : {
"request" : "once",
"prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
},
"autoSdkPermissions" : true,
"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.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios打包配置 */
"ios" : {
// "UIBackgroundModes" : [ "audio" ],
"urlschemewhitelist" : [ "baidumap", "iosamap" ],
"privacyDescription" : {
"NSPhotoLibraryUsageDescription" : "便于您上传头像、入职资料等",
"NSPhotoLibraryAddUsageDescription" : "便于您上传头像、入职资料等",
"NSCameraUsageDescription" : "便于您上传头像、入职资料等"
},
"idfa" : false
},
/* SDK配置 */
"sdkConfigs" : {
"ad" : {},
"geolocation" : {},
"push" : {
"unipush" : {}
},
"share" : {}
},
"splashscreen" : {
"ios" : {
"iphone" : {
"portrait-896h@3x" : "res/drawable-xhdpi/ios.png",
"landscape-896h@3x" : "res/drawable-xhdpi/ios.png",
"iphonex" : "res/drawable-xhdpi/ios.png",
"iphonexl" : "res/drawable-xhdpi/ios.png",
"portrait-896h@2x" : "res/drawable-xhdpi/ios.png",
"landscape-896h@2x" : "res/drawable-xhdpi/ios.png",
"retina55" : "res/drawable-xhdpi/ios.png",
"retina55l" : "res/drawable-xhdpi/ios.png",
"retina47" : "res/drawable-xhdpi/ios.png",
"retina47l" : "res/drawable-xhdpi/ios.png",
"retina40" : "res/drawable-xhdpi/ios.png",
"retina40l" : "res/drawable-xhdpi/ios.png",
"retina35" : "res/drawable-xhdpi/ios.png"
},
"storyboard" : "static/image/recrewards_launch.zip"
},
"android" : {
"hdpi" : "res/drawable-xhdpi/splash3.9.png",
"xhdpi" : "res/drawable-xhdpi/splash2.9.png",
"xxhdpi" : "res/drawable-xhdpi/splash1.9.png"
},
"iosStyle" : "storyboard"
},
"icons" : {
"android" : {
"hdpi" : "static/image/7272@2x.png",
"xhdpi" : "static/image/9696@2x.png",
"xxhdpi" : "static/image/144144@2x.png",
"xxxhdpi" : "static/image/192192@2x.png"
},
"ios" : {
"appstore" : "static/image/10241024@2x.png",
"iphone" : {
"app@2x" : "static/image/120120@2x.png",
"app@3x" : "static/image/180180@2x.png",
"spotlight@2x" : "static/image/8080@2x.png",
"spotlight@3x" : "static/image/120120@2x.png",
"settings@2x" : "static/image/5858@2x.png",
"settings@3x" : "static/image/8787@2x.png",
"notification@2x" : "static/image/4040@2x.png",
"notification@3x" : "static/image/6060@2x.png"
},
"ipad" : {
"app" : "static/image/7676@2x.png",
"app@2x" : "static/image/152152@2x.png",
"proapp@2x" : "static/image/167167@2x.png",
"spotlight" : "static/image/4040@2x.png",
"spotlight@2x" : "static/image/8080@2x.png",
"settings" : "static/image/2929@2x.png",
"settings@2x" : "static/image/5858@2x.png",
"notification" : "static/image/2020@2x.png",
"notification@2x" : "static/image/4040@2x.png"
}
}
}
},
保存之后,云打包生成apk,再次安装启动的时候还是会申请权限,但是拒绝后不会出现,强制退出应用。
上传应用市场,完美通过。