U8SDK——自动动态权限处理

作者: 分类: U8SDK 发布时间: 2019-06-19 21:04 6U8SDK——自动动态权限处理已关闭评论

自Android 6.0推出以来, 动态权限申请就成为了游戏和普通app开发绕不过去的坎了。对于手机游戏, 游戏本身可能用到一些危险权限,需要动态申请。然后接各个渠道平台SDK, 渠道SDK里面也会用到很多危险权限。有些渠道SDK内部对于自己使用的危险权限,自己做了动态申请;有些渠道SDK则为了图省事,直接将动态权限申请的需求暴露给了SDK接入开发者。

以前很多渠道SDK或者我们本身为了图省事, 直接将targetSdkVersion设置为22来规避动态权限申请。

但是现在,很多渠道,特别是部分厂商渠道都是强制性要求targetSdkVersion必须设置为26以上。所以,动态权限申请,不管对于游戏还是对于渠道SDK来说, 都是必须要处理的事情了。

而对于动态权限申请这块,因为国内厂商的原因,也是被改的五花八门, 比如targetSdkVersion就算设置为22, 在部分厂商的设备上依然需要动态申请权限。又或者,明明调用了权限申请的api,为什么部分设备上弹出不了申请界面呢?权限申请失败,想引导玩家跳转到应用详情页面, 又发现很多厂商的设备根本跳不过去。。。

U8SDK作为手游渠道SDK聚合框架, 我们向游戏层屏蔽了各个渠道SDK的差异,提供了一套统一的API供游戏调用,然后通过打包后台来打出各个渠道SDK的包。 为了让游戏开发者解放权限相关的处理工作,也为了避免每个渠道SDK接入的时候去处理权限问题,我们考虑在聚合框架层,做自动的动态权限申请逻辑。这样,游戏开发者不用关心权限的问题,渠道SDK接入的时候,也无须关心。

在U8SDK里面实现动态权限的自动处理还是挺方便的。 同时, 根据最新的隐私政策, 手游里面需要在首次进入的时候, 给玩家明确的隐私相关的条款的说明和提示。这些我们都可以统一做到聚合SDK里面。

关于自动权限处理步骤:

1、U8SDK打包工具在做完AndroidManifest.xml合并之后,我们从最终的AndroidManifest.xml中抽取所有危险权限,同一个group下面,只抽取一个。(最终的AndroidManifest.xml中涵盖了母包,渠道SDK,各个插件中的权限)

2、将抽取到的危险权限,写入到最终apk的assets目录下

3、U8SDK U8Application初始化的时候,从assets下面读取危险权限列表

4、然后U8SDK框架里面权限等组件,来完成动态权限的申请,申请成功,调用U8SDK的初始化(进而调用到渠道SDK的初始化)

5、权限申请失败, 引导用户前往设置里面进行权限的手动开启

这样,游戏开发者如果使用U8SDK的话, 就无须在游戏母工程中加任何动态权限相关的代码,使用U8SDK接入渠道SDK的同学,也无须处理各个渠道SDK的动态权限申请。一切都由U8SDK打包工具和框架来自动完成。

U8SDK将权限申请的流程和隐私协议的展示,做到了一起。 整个权限申请和隐私界面的操作流程如下:

用户在使用U8SDK打包系统中,在渠道配置页面, 可以配置自动权限和用户协议相关的配置:

首次安装游戏之后, 会弹出权限申请展示页面:

玩家点击用户隐私协议, 会跳转到用户隐私协议条款页面。

玩家勾选,并点击继续下一步, 会开始依次申请权限。 如果玩家没有勾选同意隐私协议,直接点击继续下一步, 会弹出用户隐私协议说明对话框,展示用户隐私协议说明。

玩家点击同意并继续,会开始进行权限的依次申请。

但是这样做了之后,也有弊端,就是权限申请都在游戏运行开始的时候了。 有时候为了更好的用户体验, 一般app是在实际用到某个权限开始之前再进行申请。 但是对于各个游戏引擎开发的手游来说,这就比较难以实现了。

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=2280

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入