Merge branch '0功能/用户隐私协议' into china/dev

dev_chengFeng
gaoxin 2021-10-29 16:50:20 +08:00
commit 20b685f694
4 changed files with 1562 additions and 16 deletions

View File

@ -188,5 +188,39 @@ namespace GameLogic
string v = NetInfo.GetInfo(key); string v = NetInfo.GetInfo(key);
return v; return v;
} }
// 判断设置是否激活
public Boolean IsSettingActive(string settingType)
{
string s_isActive = "Setting." + settingType + ".isActive";
string s_versionCode = "Setting." + settingType + ".versionCode";
string isActive = this.GetConfigInfo(s_isActive);
if (isActive != null && isActive.Equals("1"))
{
if (!AppConst.isSDK)
{
return true;
}
int vc = AndroidDeviceInfo.Instance.GetVersionCode();
if (vc >= Convert.ToInt32(this.GetConfigInfo(s_versionCode)))
{
//符合包版本
return true;
}
}
return false;
}
public string GetSettingValue(string settingType)
{
if (this.IsSettingActive(settingType))
{
string s_value = "Setting." + settingType + ".value";
string value = this.GetConfigInfo(s_value);
return value;
}
return null;
}
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -45,6 +45,16 @@ namespace GameLogic {
[SerializeField] [SerializeField]
Text msg; Text msg;
/// <summary> /// <summary>
/// 消息
/// </summary>
[SerializeField]
GameObject proto;
/// <summary>
/// 消息
/// </summary>
[SerializeField]
GameObject grant;
/// <summary>
/// title /// title
/// </summary> /// </summary>
[SerializeField] [SerializeField]
@ -53,11 +63,30 @@ namespace GameLogic {
/// 点击回调 /// 点击回调
/// </summary> /// </summary>
UnityAction<int> action; UnityAction<int> action;
/// <summary>
/// 隐私协议按钮
/// </summary>
[SerializeField]
Button[] protoButton;
[SerializeField]
Button[] privateButton;
protected void Awake() protected void Awake()
{ {
buttonL.onClick.AddListener(LClickHandler); buttonL.onClick.AddListener(LClickHandler);
buttonR.onClick.AddListener(RClickHandler); buttonR.onClick.AddListener(RClickHandler);
buttonC.onClick.AddListener(CClickHandler); buttonC.onClick.AddListener(CClickHandler);
foreach(Button b in protoButton)
{
b.onClick.AddListener(ProtoClickHandler);
}
foreach (Button b in privateButton)
{
b.onClick.AddListener(PrivateClickHandler);
}
title.text = SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.TIPS); title.text = SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.TIPS);
} }
@ -87,6 +116,56 @@ namespace GameLogic {
{ {
CallBack(2); CallBack(2);
} }
/// <summary>
/// 用户隐私协议按钮点击事件
/// </summary>
private void ProtoClickHandler()
{
string UserChannel = ConfigManager.Instance.GetSettingValue("USER_CHANNEL");
string Channel = VersionManager.Instance.GetVersionInfo("channel");
string serverUrl = VersionManager.Instance.GetVersionInfo("serverUrl");
string ChannelID = UserChannel != null ? UserChannel : Channel;
string url = serverUrl + "jl_loginserver/getAgreement?gamePack=" + ChannelID;
NetworkManager.Instance.SendGetHttp(url, null, (string json) =>
{
Hashtable info = MiniJSON.jsonDecode(json) as Hashtable;
Hashtable parms = info["parms"] as Hashtable;
string instructions = parms["instructions"] as string;
if (ConfigManager.Instance.IsSettingActive("INNER_WEB_CONTROL"))
{
SDK.SDKManager.Instance.OpenWeb(instructions);
}
else
{
Application.OpenURL(url);
}
}, null, null);
}
/// <summary>
/// 用户隐私协议按钮点击事件
/// </summary>
private void PrivateClickHandler()
{
string UserChannel = ConfigManager.Instance.GetSettingValue("USER_CHANNEL");
string Channel = VersionManager.Instance.GetVersionInfo("channel");
string serverUrl = VersionManager.Instance.GetVersionInfo("serverUrl");
string ChannelID = UserChannel != null ? UserChannel : Channel;
string url = serverUrl + "jl_loginserver/getAgreement?gamePack=" + ChannelID;
NetworkManager.Instance.SendGetHttp(url, null, (string json) =>
{
Hashtable info = MiniJSON.jsonDecode(json) as Hashtable;
Hashtable parms = info["parms"] as Hashtable;
string privacy = parms["privacy"] as string;
if (ConfigManager.Instance.IsSettingActive("INNER_WEB_CONTROL"))
{
SDK.SDKManager.Instance.OpenWeb(privacy);
}
else
{
Application.OpenURL(url);
}
}, null, null);
}
/// <summary> /// <summary>
/// 回调 /// 回调
@ -110,6 +189,9 @@ namespace GameLogic {
public void Show(string strL, string strR, string msg, UnityAction<int> action) public void Show(string strL, string strR, string msg, UnityAction<int> action)
{ {
this.gameObject.SetActive(true); this.gameObject.SetActive(true);
this.msg.gameObject.SetActive(true);
this.proto.gameObject.SetActive(false);
this.grant.gameObject.SetActive(false);
this.buttonL.gameObject.SetActive(true); this.buttonL.gameObject.SetActive(true);
this.buttonR.gameObject.SetActive(true); this.buttonR.gameObject.SetActive(true);
this.buttonC.gameObject.SetActive(false); this.buttonC.gameObject.SetActive(false);
@ -128,6 +210,9 @@ namespace GameLogic {
public void Show(string strc, string msg, UnityAction<int> action) public void Show(string strc, string msg, UnityAction<int> action)
{ {
this.gameObject.SetActive(true); this.gameObject.SetActive(true);
this.msg.gameObject.SetActive(true);
this.proto.gameObject.SetActive(false);
this.grant.gameObject.SetActive(false);
this.buttonL.gameObject.SetActive(false); this.buttonL.gameObject.SetActive(false);
this.buttonR.gameObject.SetActive(false); this.buttonR.gameObject.SetActive(false);
this.buttonC.gameObject.SetActive(true); this.buttonC.gameObject.SetActive(true);
@ -146,11 +231,58 @@ namespace GameLogic {
public void Show(string msg) public void Show(string msg)
{ {
this.gameObject.SetActive(true); this.gameObject.SetActive(true);
this.msg.gameObject.SetActive(true);
this.proto.gameObject.SetActive(false);
this.grant.gameObject.SetActive(false);
this.buttonL.gameObject.SetActive(false); this.buttonL.gameObject.SetActive(false);
this.buttonR.gameObject.SetActive(false); this.buttonR.gameObject.SetActive(false);
this.buttonC.gameObject.SetActive(false); this.buttonC.gameObject.SetActive(false);
this.msg.text = msg; this.msg.text = msg;
} }
/// <summary>
/// 显示用户隐私协议
/// </summary>
/// <param name="strL"></param>
/// <param name="strR"></param>
/// <param name="msg"></param>
public void ShowProto(string strL, string strR, string msg, UnityAction<int> action)
{
this.gameObject.SetActive(true);
this.msg.gameObject.SetActive(false);
this.proto.gameObject.SetActive(true);
this.grant.gameObject.SetActive(false);
this.buttonL.gameObject.SetActive(true);
this.buttonR.gameObject.SetActive(true);
this.buttonC.gameObject.SetActive(false);
this.buttonLText.text = strL;
this.buttonRText.text = strR;
this.action = action;
//设置显示内容
this.proto.GetComponent<Text>().text = msg;
}
/// <summary>
/// 显示权限申请
/// </summary>
/// <param name="strL"></param>
/// <param name="strR"></param>
/// <param name="msg"></param>
public void ShowGrant(string strC, string msg, UnityAction<int> action)
{
this.gameObject.SetActive(true);
this.msg.gameObject.SetActive(false);
this.proto.gameObject.SetActive(false);
this.grant.gameObject.SetActive(true);
this.buttonL.gameObject.SetActive(false);
this.buttonR.gameObject.SetActive(false);
this.buttonC.gameObject.SetActive(true);
this.buttonCText.text = strC;
this.action = action;
//设置显示内容
this.grant.transform.Find("Scroll View/Viewport/Text").GetComponent<Text>().text = msg;
}
} }
} }

View File

@ -30,11 +30,12 @@ namespace GameLogic
UpdateMsgBox msgBox; UpdateMsgBox msgBox;
AssetBundle bundle; AssetBundle bundle;
void Awake() void Awake()
{ {
msgBox.gameObject.SetActive(false); msgBox.gameObject.SetActive(false);
//StartCoroutine(GetGameConfig()); //StartCoroutine(GetGameConfig());
BeginUpdatePlatform(); //BeginUpdatePlatform();
} }
public IEnumerator LoadFromStream(Action<Sprite> act) public IEnumerator LoadFromStream(Action<Sprite> act)
@ -58,6 +59,7 @@ namespace GameLogic
else else
{ {
Hashtable table = MiniJSON.jsonDecode(uwr.downloadHandler.text) as Hashtable; Hashtable table = MiniJSON.jsonDecode(uwr.downloadHandler.text) as Hashtable;
// 背景图
string bgName = table["UpdatePanelBG"] as string; string bgName = table["UpdatePanelBG"] as string;
string texPath = Application.streamingAssetsPath + "/Res/" + bgName + ".png"; string texPath = Application.streamingAssetsPath + "/Res/" + bgName + ".png";
#if UNITY_IOS #if UNITY_IOS
@ -104,8 +106,85 @@ namespace GameLogic
img.color = new Color(1f, 1f, 1f, 1f); img.color = new Color(1f, 1f, 1f, 1f);
go.SetActive(true); go.SetActive(true);
go2.SetActive(true); go2.SetActive(true);
// 用户隐私协议
TryGetUserAgree(() =>
{
BeginUpdatePlatform();
});
})); }));
} }
private void TryGetUserAgree(Action a)
{
// 判断是否需要显示用户隐私界面
Boolean needUserAgree = ConfigManager.Instance.IsSettingActive("APP_START_USER_AGREE");
if (!needUserAgree)
{
if (a != null)
{
a();
}
return;
}
// 判断是否已经同意
bool isAgree = PlayerPrefs.GetInt("APP_IsAgreeUser", 0) == 1;
if (isAgree)
{
if (a != null)
{
a();
}
return;
}
// 没同意则弹窗提示
string proto = "在您使用我们(猕猴桃)的服务前,请您务必审慎阅读、" +
"充分理解<color=#00A7FF>猕猴桃用户协议</color>和<color=#00A7FF>猕猴桃隐私政策</color>的各条款。" +
"<color=#FFFAD4><b>同时,您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的、约定争议解决方式和司法管辖的条款。" +
"</b></color>如您已经详细阅读并同意<color=#00A7FF>猕猴桃用户协议</color>和<color=#00A7FF>猕猴桃隐私政策</color>" +
"请点击“同意”开始使用我们的服务。";
msgBox.ShowProto("不同意", "同意", proto, (r1) =>
{
if (r1 == 1)
{
string grant = "为确保您的游戏体验,我们将在您使用我们的服务过程中申请以下权限,届时您可以选择同意或者拒绝开启相关权限,若是拒绝则会影响部分功能:" +
"\n\n" +
"<b> 储存权限 </b>" +
"我们访问您的储存权限是为了向您提供游戏截图保存功能" +
"\n\n" +
"<b> 电话权限 </b>" +
"我们访问您的电话权限是为了分析游戏的运行状态,优化游戏体验";
msgBox.ShowGrant("确定", grant,(result) =>
{
PlayerPrefs.SetInt("APP_IsAgreeUser", 1);
if (a != null)
{
a();
}
});
}
else
{
msgBox.Show("退出游戏", "查看协议", "需要同意本隐私权政策才能继续游戏,若仍不同意本隐私权政策,很遗憾我们将无法为您提供服务。", (r2) =>
{
if (r2 == 1)
{
TryGetUserAgree(a);
}
else
{
Application.Quit();
}
});
}
});
}
private void OnDestroy() private void OnDestroy()
{ {
string updatePanelBg = ConfigManager.Instance.GetConfigInfo("Setting.UPDATE_PANEL_BG.value"); string updatePanelBg = ConfigManager.Instance.GetConfigInfo("Setting.UPDATE_PANEL_BG.value");
@ -118,21 +197,21 @@ namespace GameLogic
private void Update() private void Update()
{ {
if (Input.GetKeyDown(KeyCode.Escape)) //if (Input.GetKeyDown(KeyCode.Escape))
{ //{
if(AppConst.isSDK && App.SDKMgr.IsSupportExit()) // if(AppConst.isSDK && App.SDKMgr.IsSupportExit())
{ // {
App.SDKMgr.ExitGame(); // App.SDKMgr.ExitGame();
} // }
else // else
{ // {
msgBox.Show(SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CANEL), SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CONFIRM), SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CONFIRM_CLOSE), (result) => // msgBox.Show(SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CANEL), SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CONFIRM), SLanguageMoreLanguageMgr.Instance.GetLanguageChValBykey(more_language.CONFIRM_CLOSE), (result) =>
{ // {
if (result == 1) // if (result == 1)
Application.Quit(); // Application.Quit();
}); // });
} // }
} //}
} }
// void Start() // void Start()