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-524516.html

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

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

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

相关文章

  • 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日
    浏览(23)
  • 【大数据开发运维解决方案】超级详细的VMware16安装Redhat8&挂载镜像配置本地yum源&安装unixODBC教程

    今儿同事反馈在Informatica对接达梦数据库的过程中,需要安装ODBC,官方推荐的是ODBC2.3.0,同事使用的操作系统环境为redhat8.6,其在 ./configure 编译ODBC过程中出现问题,一波操作后安装失败,博主简单分析错误日志后发现编译过程中需要安装并更新一些gcc编译器,他使用的服务器

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

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

    2024年02月13日
    浏览(46)
  • Unity 音频卡顿 静帧 等待等问题的解决方案

    是否遇到过在Unity中加载音频文件卡顿(也就是画面卡住)的现象?特别是加载外部音频文件时。虽然时间很短,但这终归不是什么好现象,尤其是打游戏的话,影响很大。但是一些有牌面的Boss也不能不配音乐。 当然也可以通过其它方式解决,比如特定条件统一加载、切场景

    2024年02月11日
    浏览(22)
  • 电脑蓝屏问题排查和解决方案(超全面,超详细)

    本篇文章适用于 解决电脑能正常开机,但是用一会后就蓝屏 的问题。按照下面的顺序进行检查和修复, 绝大部分蓝屏问题都能得到解决 。 电脑蓝屏可以从三个方面进行检查: 1、内存条,2、硬盘,3、程序或者软件驱动。 1.内存条 内存条出问题或者损坏会导致电脑蓝屏,可

    2024年02月09日
    浏览(23)
  • unity使用videoplayer组件播放视频黑屏问题解决方案

    1、视频使用动态加载方式 2、资源需要放到resource文件夹下,不能被打成ab 3、资源打包的时候不能被压缩,在android打包文件设置成不压缩   build.gradle文件: 可能出现的问题: 导出的Android版本播放视频只用声音没有画面,初始化VideoPlayer组件时,Android平台的报错提示是:E/

    2024年02月13日
    浏览(44)
  • 【Unity】Animator Controller中动画消失 显示问题分析及解决方案

    Unity中的Animator Controller界面突然显示空白,编辑好的动画可以正常播放,但Animator ControllerAnimator Controller界面就是不显示。重启后就再次出现,启动项目后就又消失 可能是Unity缓存问题,重新生成Unity中缓存文件即可。 关闭Unity编辑器 打开项目所在位置的 Library 文件夹 将该文

    2024年02月11日
    浏览(38)
  • 跨域问题踩坑记录——附多种报错详细解决方案

    跨域是出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,当一个请求url的 协议、域名、端口 三者之间任意一个与当前页面url不同即为跨域。 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的

    2024年02月04日
    浏览(21)
  • Unity连接数据库mysql全过程+可能遇到的问题与解决方案

    目录 一、具备条件 二、unity连接mysql 三、问题总结 1. Mysql安装完成         安装完成后需要查看mysql的版本,打开终端(管理者身份运行),输入以下语句登录mysql,查看MySQL版本; 可以看到我下载的版本是 5.7.38; 2. MySQL Connector/NET下载 目的:为了搭建unity连接mysql的环境

    2024年02月03日
    浏览(36)
  • 数据安全与访问控制:实现数据隐私和安全的解决方案

    作者:禅与计算机程序设计艺术 随着互联网信息技术的迅速发展、社会生活的数字化和网络化、企业的数字化转型,越来越多的公司及组织希望通过数据管理、存储和处理等方式实现对个人或单位的数据安全、保护、控权等,有效保障其合法权益和社会公共利益。数据安全和

    2024年02月04日
    浏览(22)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包