Unity 之 安卓平台上架隐私问题解决方案

这篇具有很好参考价值的文章主要介绍了Unity 之 安卓平台上架隐私问题解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,平台测试隐私问题

场景 1:
APP 未见向用户明示个人信息收集使用的目的、方式和范围,未经用户同意,存在收集 Android ID、SIM 卡信息的行为。(存在风险)

Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

场景 2:
APP 未见向用户明示 SDK 收集使用个人信息的目的、方式和范围,未经用户同意,SDK 存在收集 com.unity3d.player 获 取 SIM 卡信息、com.unity3d.player 获取 Android ID 的行为。(存在风险)
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


二,解决方式一

在Unity启动前,添加Activity 用于进行隐私政策的展示和授权。

PS:不导出安卓工程直接打包apk的方式可以使用此解决方案,导出安卓工程的打包apk方式的看后面的方案二。

下面是在Unity中的操作步骤。

2.1 勾选自定义Mainifest

勾选自定义Mainifest。Project Settings --> Player --> Andorid–>Publishing Settings -->Custom Main Manifest
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

2.2 修改自定义Mainifest

最终的Mainifest截图:
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

添加代码释义:

  • 设置为主 Activity,当应用程序启动时。系统将会查找具有该 intent action 的 Activity 并将其作为默认启动界面。
    <action android:name="android.intent.action.MAIN" />

  • 设置为启动 Activity。 它将会在应用程序列表中显示一个应用图标,并且当用户点击次图标时,它将作为默认启动界面启动应用程序。
    <category android:name="android.intent.category.LAUNCHER" />

  • 添加网络访问权限
    <uses-permission android:name="android.permission.INTERNET"/>


最终的AndroidManifest源码:

<?xml version="1.0" encoding="utf-8"?>
<manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.unity3d.player"
        xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.PrivacyActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

2.3 隐私协议弹窗逻辑

创建PrivacyActivity.java文件,路径:Assets/Plugins/Android/com.unity3d.player/PrivacyActivity.java

Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

注意文件夹名称不要写错,因为Unity导出的安卓工程使用的就是com.unity3d.player路径。

Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


使用时需将下面代码:隐私政策的描述和网络地址 修改为自己的项目需要的即可。代码注释比较详细不在赘述。

PrivacyActivity 代码如下:

package com.unity3d.player;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.webkit.WebView;
 
public class PrivacyActivity extends Activity implements DialogInterface.OnClickListener {

   // 隐私协议内容
   final String privacyContext =
             "欢迎使用本游戏,在使用本游戏前,请您充分阅读并理解 <a href=\"https://blog.csdn.net/czhenya\">" +
             "《用户协议》</a>和<a href=\"https://blog.csdn.net/czhenya\">《隐私政策》</a>各条;\n" +
     "1.保护用户隐私是本游戏的一项基本政策,本游戏不会泄露您的个人信息;\n" +
     "2.我们会根据您使用的具体功能需要,收集必要的用户信息(如申请设备信息,存储等相关权限);\n" +
     "3.在您同意App隐私政策后,我们将进行集成SDK的初始化工作,会收集您的android_id、Mac地址、IMEI和应用安装列表,以保障App正常数据统计和安全风控;\n" +
     "4.为了方便您的查阅,您可以通过“设置”重新查看该协议;\n" +
     "5.您可以阅读完整版的隐私保护政策了解我们申请使用相关权限的情况,以及对您个人隐私的保护措施。";
     
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  
        // 如果已经同意过隐私协议则直接进入Unity Activity
        if (GetPrivacyAccept()){
            EnterUnityActivity();
            return;
        }
        // 弹出隐私协议对话框
        ShowPrivacyDialog();
    }
 
    // 显示隐私协议对话框
    private void ShowPrivacyDialog(){
        WebView webView = new WebView(this);
        webView.loadData(privacyContext, "text/html", "utf-8");         
        AlertDialog.Builder privacyDialog = new AlertDialog.Builder(this);
        privacyDialog.setCancelable(false);
        privacyDialog.setView(webView);
        privacyDialog.setTitle("提示");
        privacyDialog.setNegativeButton("拒绝",this);
        privacyDialog.setPositiveButton("同意",this);
        privacyDialog.create().show();
    }
    
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        switch (i){
            case AlertDialog.BUTTON_POSITIVE://点击同意按钮
                SetPrivacyAccept(true);
                EnterUnityActivity(); //启动Unity Activity
                break;
            case AlertDialog.BUTTON_NEGATIVE://点击拒绝按钮,直接退出App
                finish();
                break;
        }
    }
    
    // 启动Unity Activity
    private void EnterUnityActivity(){
        Intent unityAct = new Intent();
        unityAct.setClassName(this, "com.unity3d.player.UnityPlayerActivity");
        this.startActivity(unityAct);
    }
    
    // 本地存储保存同意隐私协议状态
    private void SetPrivacyAccept(boolean accepted){
        SharedPreferences.Editor prefs = this.getSharedPreferences("PlayerPrefs", MODE_PRIVATE).edit();
        prefs.putBoolean("PrivacyAcceptedKey", accepted);
        prefs.apply();
    }
    
    // 获取是否已经同意过
    private boolean GetPrivacyAccept(){
        SharedPreferences prefs = this.getSharedPreferences("PlayerPrefs", MODE_PRIVATE);
        return prefs.getBoolean("PrivacyAcceptedKey", false);
    }
}

至此,就完成全部流程了,直接导出apk。运行会先弹出隐私界面,同意后才启动Unity

Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


三,解决方式二

此方案适用于Unity项目导出Android工程后在打包apk的方式。逻辑同上,只是将上面在Unity里面的操作修改到Android工程中了。

操作步骤如下:

3.1 导出安卓工程

  1. 目标平台切换到Android
  2. 勾选Export Project
  3. 点击Export选择导出目录导出即可
    Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

导出后工程目录:
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议

然后使用AndroidStudio打开即可
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


3.2 创建上层Activity

还是使用的上文2.3中的代码逻辑,在com.unity3d.player下创建PrivacyActivity把代码粘贴进去即可:

将工程模式调整成Project,即可看到下图一样的目录结构:
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


3.3 配置AndroidManifest

添加新的PrivacyActivity,然后将UnityPlayerActivity中的intent-filter 剪切上来:

<activity android:name="com.unity3d.player.PrivacyActivity"
        android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议


四,源码分享

实现逻辑就是在Unity启动前添加一个同意隐私的弹出,实现步骤就按照上面的操作即可,还有不明白的童鞋可以评论或私信,我看到就会及时回复。

为了便于以后其他项目复用,我导出UnityPackage和安卓工程进行保存:
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议
工程源码
Unity 之 安卓平台上架隐私问题解决方案,ジ﹋★☆『 引擎进阶 』,unity,游戏引擎,隐私协议
点击下面👇🏻卡片,回复 隐私 可获得上图解决隐私问题的源码工程~文章来源地址https://www.toymoban.com/news/detail-575402.html

到了这里,关于Unity 之 安卓平台上架隐私问题解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小米手机小游戏隐私问题解决方案

    1.由于laya底层代码调用获取设备信息,导致原先启动laya引擎后才去弹出隐私政策条款的功能是过不了审核的,所以需要在android的设计一个隐私条款的弹窗,玩家同意条款后才启动laya引擎: (1)定义隐私条款弹窗的xml文件:在layout文件夹下创建 activity_privacy_policy.xml (2)既

    2024年02月03日
    浏览(47)
  • uniapp 微信小程序最新隐私弹窗更新方案,更新后无法登录问题解决方案

    uni-popup ref=\\\"popusAuthorization\\\" type=\\\"center\\\" :maskClick=\\\"false\\\" view class=\\\"contentview\\\" view class=\\\"title\\\"隐私保护指引/view view class=\\\"des\\\" @click=\\\"openPrivacyContract\\\" 在使用当前小程序服务之前,请仔细阅读text style=\\\"color: #07c160;\\\"{{privacyContractName}}/text。如你同意{{privacyContractName}},请点击“同意”开始使

    2024年02月09日
    浏览(30)
  • 关于unity下载安卓SDK模块下载失败: Validation Failed解决方案

    如果有用就点个赞吧!!!

    2024年04月12日
    浏览(28)
  • 安卓之导致ANR的原因分析,问题定位以及解决方案

            在Android应用开发中,Application Not Responding(ANR)是一种常见的性能问题,它直接关系到用户体验的质量。当应用在特定时间段内无法及时响应用户的交互或者系统事件时,系统将会抛出ANR错误,提示用户应用已停止响应。为了确保应用的流畅性和用户满意度,理解

    2024年03月13日
    浏览(40)
  • unity游戏,插入聚合广告TopOn,优量汇,穿山甲,groMore,快手等,隐私协议解决方案!(包括传感器的使用目的和方式,还有Sdk使用Mac地址和软件列表的目的)

    很久以前参考别的大佬的代码,忘了来源,因为新游戏增加了一些东西,上架TapTap不合格,原因是少了传感器的使用目的和方式,还有Sdk使用Mac地址和软件列表的目的。 所以补充了传感器和软件列表。 只需要把这个代码放到UNITY项目的Editor目录,打包就有弹窗。

    2024年02月13日
    浏览(75)
  • 【软件测试】APP 上架指南:iOS App Store 首次上架被拒原因分析与解决方案

    目录 一、前言 二、APP 审核备案新规 (1)iOS 上架审核申请被拒  (2)苹果应用商店重大调整  (3)首次备案流程 ① 阿里云备案   ② 华为云备案 ③ 腾讯云备案 三、iOS 首次上架拒审原因分析 (1)首次拒审:iOS 17 兼容性 ① 拒审原文 ② 拒审译文  ③ 拒审原因分析  ④

    2024年02月03日
    浏览(32)
  • Unity导出安卓工程并新建activity用于放置隐私协议

    1.现在unity里导出安卓工程 2.用Android Studio,打开导出的工程 点击Open打开,这不用说了吧 3.右键新建一个empty Activity 4.替换这里为Activity 5.打开这个布局文件 6.点开design,自己搞下布局,这里我只是举个例子,大概这样 点开code,粘贴这段代码,就能得到一个跟我一样的界面

    2024年02月07日
    浏览(29)
  • Unity跨平台UI解决方案:可能是最全的FairyGUI系列教程

    FairyGUI的项目文件结构 .objs 内部数据目录。注意:不要加入版本管理,因为这里的内容是不需要共享的。 assets 包内容放置目录,资源内容都在这里面,里面还可以分不同的包,便于区分管理(看下图) settings 配置文件放置目录。 ****.fairy 项目识别文件,也就是项目名称 目录

    2024年04月14日
    浏览(28)
  • windows上进行IOS 应用开发+上架全流程的解决方案(uniapp)

    本人通过查阅网上资料和apple开发文档完全走了一遍上架流程,使用的IDE是uniapp,使用的uni框架编写app,使用云发布。成功上架两款小产品,在这里简单的说一下整体的流程。 一、物料准备: iphone手机,ios系统需要在16以上,否则无法注册apple developer。(注册developer需要在苹

    2024年02月10日
    浏览(42)
  • 安防监控视频汇聚平台EasyCVR视频平台调用iframe地址无法播放的问题解决方案

    安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、视频云存储、视频集中存储、视频存储磁盘阵列、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、AI算法中台智能分析无缝对接等功

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包