EMAS 移动推送SDK如何处理隐私合规问题

简介: 读取个人信息, 读取应用列表,自启动,应用上架被驳回。

移动推送SDK读取的个人信息以及用途:

移动推送

设备信息,包括操作系统、设备型号,IP ,运营商信息

用于识别推送设备,实现向单个设备推送功能


移动热修复SDK读取的App权限以及用途:

移动推送

ACCESS_NETWORK_STATE

获取网络连接状态

当推送异常时,用于判断网络状态。

以上是移动推送设计个人信息和权限的用途, 需要加到你的app隐私文档中,除此之外,你还需要在代码中如下操作:

移动推送SDK的关键方法 PushServiceFactory.init(applicationContext); 必须在Application的onCreate中执行,它不会获取用户信息。register() 需要在用户签署隐私政策之后调用:

public class MyApplication extends Application {

   @Override
   public void onCreate() {

       super.onCreate();
       PushServiceFactory.init(this);  // 正常初始化,这个方法无需延后也不要判断任何进程
       // 获取隐私政策签署状态 ,signedFlag 是你在签署隐私协议的时候保存的签署状态:同意 or 拒绝
       if (signedFlag) {

           CloudPushService.register(callback); //阿里注册
           HuaWeiRegister.register(this); // 厂商注册
       }

   }

}


// 在用户同意隐私协议之后这样写:
if (userClickedUserAgreement) {

   CloudPushService.register(callback); // 阿里注册
   HuaWeiRegister.register(getApplication()); // 厂商注册
}

以上代码片段可以通过大部分应用市场的隐私检查, 但是2022年8月后部分厂商加严了隐私检查,有可能会提示以下问题:


1,android.intent.action.BOOT_COMPLETED用于维持重启后推送通道的稳定性,个别厂商可能会不允许,解决方法:在清单文件中移除调用,移除后对推送功能影响不大,代码如下:

<receiver
   android:name="com.taobao.accs.EventReceiver"
   tools:node="merge"
   android:exported="true">
   <intent-filter tools:node="remove">
       <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
</receiver>

2,部分检测机构认为 读取应用安装列表,原因是调用堆栈中有 queryIntentActivitiesAsUser  调用:

说明: 移动推送代码如下

public static boolean disableComponent(Context context, String componentName) {

   ComponentName comptName = new ComponentName(context, componentName);
   PackageManager pm = context.getPackageManager();
   try {

       ALog.d(TAG, "disableComponent,comptName=" + comptName.toString());
       int enabled = pm.getComponentEnabledSetting(comptName);
       if (enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {

           pm.setComponentEnabledSetting(comptName,
                   PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                   PackageManager.DONT_KILL_APP);
           return true;
       }

   } catch (Throwable e) {

   }

   return false;
}

PackageManager 的 setComponentEnabledSetting 方法内部实现会去调用 queryIntentActivitiesAsUser,很多 Google 自己的 API 都会调用 queryIntentActivitiesAsUser;

但所有检测机构检测有没有获取安装列表就是坚持有没有代码调用 queryIntentActivitiesAsUser 方法,并不管是业务代码调的,还是 Google 自己 API 调的。

开发者被提示这个的话可以提供以上代码段去厂商申诉,阿里云移动推送SDK并未读取应用安装列表。

如果申诉失败,可以更改SDK初始化代码如下,即可规避:

public static void initOld(Application context) {

   boolean isFirstInstall = true;
   if (isFirstInstall) {

       // 此方法会调用 setComponentEnabledSetting 方法,setComponentEnabledSetting 内部会 触发 queryIntentActivitiesAsUser 调用
       // 所以不存在获取应用列表的行为
       // 但是这个配置,不必每次启动都调用,可以考虑仅在应用第一次启动时,调用,避免后续的频繁调用
       // 是否使用channel进程,这种初始化方式,默认是关,需要手动开启
       ACCSClient.enableChannelProcess(context, true);
   }

   // 这个有参初始化方法仅会在安装时调用一次,不会被应用市场驳回。

   PushServiceFactory.init(context, "appKey", "appSecret");
}

相关文章
|
开发工具 Android开发
应用研发平台EMAS的用户反馈SDK确实使用了WebView
应用研发平台EMAS的用户反馈SDK确实使用了WebView
126 6
|
Serverless PyTorch 文件存储
EMAS Serverless文件存储问题之上传视频真机报错如何解决
在进行Serverless应用开发和部署时,开发者可能会遇到不同类型的报错信息;本合集着重收录了Serverless环境中常见的报错问题及其解决策略,以助于开发者迅速诊断和解决问题,保证服务的连续性和可用性。
521 1
|
开发工具 数据安全/隐私保护
您需要检查并确保应用是否正确集成了EMAS的SDK
您需要检查并确保应用是否正确集成了EMAS的SDK
87 1
|
存储 小程序 安全
《五天玩转EMAS Serverless》——第二节 Serverless SDK集成与使用【上】
本文整理自EMAS Serverless讲师雨鸦,在《5天玩转EMAS Serverless训练营》的分享。本篇内容主要分为五个部分: 1.EMAS Serverless开发准备 2.Serverless SDK介绍 3.实战:Serverless SDK集成 4.实战:云资源调用 5.课程总结
235 0
|
存储 JSON 缓存
《五天玩转EMAS Serverless》——第二节 Serverless SDK集成与使用【中】
本文整理自EMAS Serverless讲师雨鸦,在《5天玩转EMAS Serverless训练营》的分享。本篇内容主要分为五个部分: 1.EMAS Serverless开发准备 2.Serverless SDK介绍 3.实战:Serverless SDK集成 4.实战:云资源调用 5.课程总结
286 0
|
存储 小程序 安全
《五天玩转EMAS Serverless》——第二节 Serverless SDK集成与使用【下】
本文整理自EMAS Serverless讲师雨鸦,在《5天玩转EMAS Serverless训练营》的分享。本篇内容主要分为五个部分: 1.EMAS Serverless开发准备 2.Serverless SDK介绍 3.实战:Serverless SDK集成 4.实战:云资源调用 5.课程总结
186 0
|
7月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
385 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
349 0
|
11月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
196 7
|
10月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
256 1