1015 lines
32 KiB
C#
1015 lines
32 KiB
C#
// ***********************************************************************
|
||
// Assembly : Game
|
||
// Author : Kimch
|
||
// Created : 2021-05-02
|
||
// Description :
|
||
// Last Modified By :
|
||
// Last Modified On :
|
||
// ***********************************************************************
|
||
// <copyright file= "KPlatform.Wechat" company="Kunpo"></copyright>
|
||
// <summary></summary>
|
||
// ***********************************************************************
|
||
#if SDK_WECHAT_WASM
|
||
|
||
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using WeChatWASM;
|
||
using WXAccountInfo = WeChatWASM.AccountInfo;
|
||
using WXSystemInfo = WeChatWASM.SystemInfo;
|
||
|
||
namespace G
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
partial class KPlatform
|
||
{
|
||
/// <summary>
|
||
/// 平台实现
|
||
/// </summary>
|
||
public class WechatPlatform : MonoBehaviour, IPlatformWapper
|
||
{
|
||
#region 初始化
|
||
|
||
private void Start()
|
||
{
|
||
this.name = "wechat";
|
||
this.Init();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 游戏SDK初始化,仅Android端
|
||
/// Init for Android client ios.
|
||
/// </summary>
|
||
public void Init()
|
||
{
|
||
// 打印当前sdk版本号
|
||
WX.InitSDK(OnInitCallback);
|
||
}
|
||
|
||
private void OnInitCallback(int code)
|
||
{
|
||
GetSystemInfo();
|
||
GetAccountInfo();
|
||
|
||
KPlatform.Instance.OnInitSuccess();
|
||
|
||
var launchResponse = WX.GetLaunchOptionsSync();
|
||
if (launchResponse != null)
|
||
OnLaunch(launchResponse);
|
||
|
||
WX.OnShow(this.OnShow);
|
||
WX.OnHide(this.OnHide);
|
||
|
||
WX.SetKeepScreenOn(new SetKeepScreenOnOption
|
||
{
|
||
keepScreenOn = true,
|
||
});
|
||
|
||
//if (envVersion == "develop")
|
||
// WX.OpenProfileStats();
|
||
}
|
||
|
||
WXSystemInfo _wxSystemInfo;
|
||
void GetSystemInfo()
|
||
{
|
||
_wxSystemInfo = WX.GetSystemInfoSync();
|
||
}
|
||
|
||
WXAccountInfo _wxAccountInfo;
|
||
void GetAccountInfo()
|
||
{
|
||
_wxAccountInfo = WX.GetAccountInfoSync();
|
||
}
|
||
|
||
void OnLaunch(LaunchOptionsGame option)
|
||
{
|
||
var rawData = option.query;
|
||
CheckShare(rawData);
|
||
}
|
||
|
||
void OnShow(OnShowCallbackResult showResponse)
|
||
{
|
||
var rawData = showResponse.query;
|
||
CheckShare(rawData);
|
||
CheckPayiOS(rawData, showResponse.referrerInfo);
|
||
|
||
KPlatform.Instance.OnApplicationFocus(true);
|
||
}
|
||
|
||
void OnHide(GeneralCallbackResult result)
|
||
{
|
||
KPlatform.Instance.OnApplicationFocus(false);
|
||
}
|
||
|
||
void CheckShare(Dictionary<string, string> rawData)
|
||
{
|
||
if (rawData != null /*&& !string.IsNullOrEmpty(rawData)*/)
|
||
{
|
||
var inviteInfo = new InviteInfo();// JsonUtility.FromJson<InviteInfo>(rawData);
|
||
//inviteInfo.userId = rawData["userId"];
|
||
rawData.TryGetValue("userId", out inviteInfo.userId);
|
||
rawData.TryGetValue("type", out inviteInfo.type);
|
||
if (inviteInfo != null && !string.IsNullOrEmpty(inviteInfo.userId))
|
||
{
|
||
KPlatform.Instance.inviteInfo = inviteInfo;
|
||
//Debug.Log("inviter " + inviteInfo.userId);
|
||
}
|
||
else
|
||
{
|
||
//Debug.Log("queryRaw " + rawData);
|
||
}
|
||
}
|
||
|
||
this.OnShare(0, "分享成功");
|
||
}
|
||
|
||
void CheckPayiOS(Dictionary<string, string> query, ResultReferrerInfo from)
|
||
{
|
||
if (query != null)
|
||
{
|
||
}
|
||
|
||
if (from != null)
|
||
{
|
||
Debug.Log(from.appId);
|
||
if (from.extraData != null)
|
||
foreach (var item in from.extraData)
|
||
{
|
||
Debug.Log(item.Key + " " + item.Value);
|
||
}
|
||
}
|
||
CheckPay();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 系统信息
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string appId
|
||
{
|
||
get { return _wxAccountInfo != null ? _wxAccountInfo.miniProgram.appId : null; }
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string envVersion
|
||
{
|
||
get { return _wxAccountInfo != null ? _wxAccountInfo.miniProgram.envVersion : null; }
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string version
|
||
{
|
||
get { return _wxSystemInfo != null ? _wxSystemInfo.version : "0.0.0"; }
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public string platform
|
||
{
|
||
get { return _wxSystemInfo != null ? _wxSystemInfo.platform : ""; }
|
||
}
|
||
|
||
public bool iOSPlatform
|
||
{
|
||
get { return platform == "ios"; }
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public int safeAreaTop
|
||
{
|
||
get
|
||
{
|
||
var safeArea = _wxSystemInfo.safeArea;
|
||
return (int)safeArea.top;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public int benchmarkLevel
|
||
{
|
||
get { return _wxSystemInfo != null ? (int)_wxSystemInfo.benchmarkLevel : 18; }
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 登录
|
||
|
||
/// <summary>
|
||
/// 正式用户调用登录接口.
|
||
/// </summary>
|
||
public void NormalLogin()
|
||
{
|
||
LoginOption option = new LoginOption
|
||
{
|
||
success = OnLoginSuccess,
|
||
fail = OnLoginFailure,
|
||
timeout = 6000,
|
||
};
|
||
//Debug.Log("Wx Login 1");
|
||
try
|
||
{
|
||
WX.Login(option);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Debug.Log("Wx Login ex " + ex.Message);
|
||
}
|
||
//Debug.Log("Wx Login 2");
|
||
}
|
||
/// <summary>
|
||
/// 帐号切换.
|
||
/// </summary>
|
||
public void SwitchAccount()
|
||
{
|
||
|
||
}
|
||
/// <summary>
|
||
/// 游客帐号绑定.
|
||
/// </summary>
|
||
public void VisitorBindAccount()
|
||
{
|
||
|
||
}
|
||
/// <summary>
|
||
/// 是否为游客登录.
|
||
/// </summary>
|
||
/// <returns>是否为游客登录.</returns>
|
||
public bool IsVisitor()
|
||
{
|
||
return false;
|
||
}
|
||
|
||
public void ClearToken()
|
||
{
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="response"></param>
|
||
private void OnLoginSuccess(LoginSuccessCallbackResult response)
|
||
{
|
||
//Debug.Log("Wx LoginSuccess " + response.code + " " + response.errMsg);
|
||
try
|
||
{
|
||
KPlatform.Instance.OnLoginSuccess(response.code, "", 1, 1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Debug.Log("Wx LoginSuccess" + ex.Message);
|
||
}
|
||
}
|
||
|
||
private void OnLoginFailure(GeneralCallbackResult response)
|
||
{
|
||
//Debug.Log("Wx OnLoginFailure " + response.errMsg);
|
||
try
|
||
{
|
||
KPlatform.Instance.OnLoginFailure(1, response.errMsg, 1);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Debug.Log("Wx OnLoginFailure" + ex.Message);
|
||
}
|
||
}
|
||
|
||
Callback2 _getUserInfoCallback;
|
||
public void GetUserNickName(Callback2 callback)
|
||
{
|
||
_getUserInfoCallback = callback;
|
||
AuthorizeOption option = new AuthorizeOption
|
||
{
|
||
scope = "scope.userInfo",
|
||
success = (authorizeResponse) => GetUserInfo(),
|
||
fail = (authorizeResponse) => ShowGetUserInfoButton(),
|
||
};
|
||
WX.Authorize(option);
|
||
}
|
||
|
||
void GetUserInfo()
|
||
{
|
||
GetUserInfoOption option = new GetUserInfoOption
|
||
{
|
||
lang = "zh_CN",
|
||
success = (getUserInfoResponse) =>
|
||
{
|
||
//Debug.Log("GetUserInfo result " + getUserInfoResponse.errCode + " " + getUserInfoResponse.errMsg);
|
||
PlayerProxy.Instance.socialAvatarUrl = getUserInfoResponse.userInfo.avatarUrl;
|
||
PlayerProxy.Instance.socialNickName = getUserInfoResponse.userInfo.nickName;
|
||
|
||
PlayerProxy.Instance.nickName = PlayerProxy.Instance.socialNickName;
|
||
GlobalNotifier.PostNotification(GlobalDefine.EVENT_NAME_CHANGED);
|
||
_getUserInfoCallback?.Invoke(0, getUserInfoResponse.errMsg);
|
||
},
|
||
|
||
fail = (getUserInfoResponse) =>
|
||
{ _getUserInfoCallback?.Invoke(0, getUserInfoResponse.errMsg); }
|
||
};
|
||
WX.GetUserInfo(option);
|
||
}
|
||
|
||
public void ShowGetUserInfoButton()
|
||
{
|
||
var btn = WX.CreateUserInfoButton(0, 0, Screen.width, Screen.height, "zh_CN", true);
|
||
btn.Show();
|
||
btn.OnTap((response) =>
|
||
{
|
||
//Debug.Log("CreateUserInfoButton result " + response.errCode + " " + response.errMsg);
|
||
if (response.errCode == 0)
|
||
{
|
||
GetUserInfo();
|
||
btn.Destroy();
|
||
}
|
||
});
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 广告
|
||
|
||
WXRewardedVideoAd _wxAd;
|
||
public void LoadRewardVideoAd_V()
|
||
{
|
||
if (_wxAd == null)
|
||
{
|
||
_wxAd = WX.CreateRewardedVideoAd(new WXCreateRewardedVideoAdParam
|
||
{
|
||
adUnitId = "adunit-ba92aa9eb2ae6720",
|
||
});
|
||
_wxAd.OnLoad(OnRewardAdLoad);
|
||
_wxAd.OnClose(OnRewardedAdClosed);
|
||
_wxAd.OnError(OnVideoError);
|
||
}
|
||
if (_wxAd != null)
|
||
_wxAd.Load();
|
||
}
|
||
|
||
public int ShowRewardAd(string scene)
|
||
{
|
||
_wxAd.Show(OnRewardAdShowSuccess, OnRewardAdShowFailure);
|
||
return 0;
|
||
}
|
||
|
||
public int ShowRewardAd(string branchId, string branchDim)
|
||
{
|
||
_wxAd.Show(branchId, branchDim, OnRewardAdShowSuccess, OnRewardAdShowFailure);
|
||
return 0;
|
||
}
|
||
|
||
private void OnRewardAdLoad()
|
||
{
|
||
Debug.Log("ad OnRewardAdLoad");
|
||
}
|
||
|
||
private void OnRewardAdShowSuccess(WXTextResponse response)
|
||
{
|
||
KPlatform.Instance.OnRewardedAdShow();
|
||
Debug.Log("ad OnRewardAdShowSuccess");
|
||
}
|
||
|
||
private void OnRewardAdShowFailure(WXTextResponse response)
|
||
{
|
||
_wxAd.Load();
|
||
Debug.Log("ad OnRewardAdShowFailure");
|
||
}
|
||
|
||
private void OnRewardedAdShow()
|
||
{
|
||
KPlatform.Instance.OnRewardedAdShow();
|
||
}
|
||
|
||
private void OnRewardClick()
|
||
{
|
||
KPlatform.Instance.OnRewardClick();
|
||
}
|
||
|
||
private void OnRewardedAdClosed(WXRewardedVideoAdOnCloseResponse response)
|
||
{
|
||
Debug.Log("ad OnRewardedAdClosed");
|
||
if (response.isEnded)
|
||
KPlatform.Instance.OnRewardVerify(true, 1f, "");
|
||
KPlatform.Instance.OnRewardedAdClosed();
|
||
|
||
_wxAd.Load();
|
||
}
|
||
|
||
private void OnVideoError(WXADErrorResponse response)
|
||
{
|
||
Debug.Log("ad OnVideoError");
|
||
KPlatform.Instance.OnVideoError();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 兑换码
|
||
|
||
//输入的兑换码
|
||
public void Redeem(string redeemCode)
|
||
{
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region AB Test
|
||
|
||
[Serializable]
|
||
class ABConfig
|
||
{
|
||
public string expt_share;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取AB测试的配置
|
||
/// Gets the ab config.
|
||
/// </summary>
|
||
/// <returns>The ab config.</returns>
|
||
/// <param name="key">Key.</param>
|
||
/// <param name="defaultValue">Default value.</param>
|
||
/// <typeparam name="T">The 1st type parameter 类型,需是JSON兼容的数据类型.</typeparam>
|
||
public string GetAbConfig(string key, string defaultValue)
|
||
{
|
||
var result = WX.GetExptInfoSync<ABConfig>(new string[] { key });
|
||
Debug.Log("GetAbConfig" + result);
|
||
return result.expt_share.ToString();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 邮件
|
||
|
||
/// <summary>
|
||
/// 获取邮件.
|
||
/// </summary>
|
||
public void FetchMail()
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// 确认邮件.
|
||
/// </summary>
|
||
/// <param name="mailIds">需要确认的邮件id.</param>
|
||
public void AckMail(int[] mailIds)
|
||
{
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 支付
|
||
|
||
Callback2 _payCallback;
|
||
PayProxy.PayInfo _payInfo;
|
||
|
||
// 查询是否支持支付
|
||
public bool QueryPay()
|
||
{
|
||
if (!KRemoteConfig.Instance.supportPay)
|
||
return false;
|
||
if (iOSPlatform && !KRemoteConfig.Instance.supportPayiOS)
|
||
return false;
|
||
return true;
|
||
}
|
||
|
||
void CheckPay()
|
||
{
|
||
if (iOSPlatform)
|
||
{
|
||
if (_payCallback != null)
|
||
_payCallback(0, "ios");
|
||
_payCallback = null;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 支付
|
||
/// </summary>
|
||
/// <param name="payData"></param>
|
||
/// <param name="callback"></param>
|
||
public void Pay(object payData, Callback2 callback)
|
||
{
|
||
_payCallback = callback;
|
||
var payInfo = payData as PayProxy.PayInfo;
|
||
if (iOSPlatform)
|
||
{
|
||
PayWithMiniApp(payInfo);
|
||
}
|
||
else
|
||
{
|
||
PayWithMidas(payInfo);
|
||
}
|
||
}
|
||
|
||
void PayWithMidas(PayProxy.PayInfo payInfo)
|
||
{
|
||
payInfo.payMethod = 0;
|
||
var payParam = new RequestMidasPaymentOption
|
||
{
|
||
env = 0,
|
||
currencyType = "CNY",
|
||
platform = "android",
|
||
mode = "game",
|
||
offerId = "1450031767",
|
||
buyQuantity = envVersion == "develop" ? 10 : payInfo.buyAmount,
|
||
zoneId = "1",
|
||
success = OnPayResultSuccess,
|
||
fail = OnPayResultFail
|
||
};
|
||
WX.RequestMidasPayment(payParam);
|
||
}
|
||
|
||
//void PayWithService(PayProxy.PayInfo payInfo)
|
||
//{
|
||
// string severAppId = "KHQiAUtB";
|
||
// if (envVersion == "develop")
|
||
// severAppId = "KHQiAUtB&dev=1";
|
||
// string payKey = payInfo.payKey;
|
||
|
||
// var param = new OpenCustomerServiceConversationOption
|
||
// {
|
||
// sessionFrom = $"{{\"receive_param\":\"{payKey}\",\"open_param\":\"{payKey}\",\"params\":\"uid={realPayInfo.userId}&gid={payKey}&aid={severAppId}&cb={ServerProxy.SERVER_URL + "/api/iospay/delivery"}\"}}",
|
||
// showMessageCard = true,
|
||
// sendMessageImg = "https://bingdu-kunpo.oss-cn-hangzhou.aliyuncs.com/sanguo/wxShare/other/rechargeTop.png",
|
||
// success = (response) =>
|
||
// {
|
||
// },
|
||
// fail = (response) =>
|
||
// {
|
||
// _payCallback?.Invoke(1, response.errMsg);
|
||
// }
|
||
// };
|
||
// WX.OpenCustomerServiceConversation(param);
|
||
//}
|
||
|
||
void PayWithMiniApp(PayProxy.PayInfo payInfo)
|
||
{
|
||
payInfo.payMethod = 1;
|
||
if (_iOSPayData == null)
|
||
{
|
||
_iOSPayData = new Dictionary<string, string>
|
||
{
|
||
{ "goods_id","" },
|
||
{ "goods_price","" },
|
||
{ "goods_name","" },
|
||
{ "player_id","" },
|
||
{ "notify_path","" },
|
||
{ "kunpo_appsecret","146d03ddeb4cd2c87aa5ec8c11fa4648" },
|
||
{ "kunpo_appid","KHQiAUtB" },
|
||
{ "openid","" },
|
||
{ "out_trade_no","" },
|
||
{ "sandbox","" },
|
||
{ "extra","" },
|
||
};
|
||
}
|
||
|
||
var dict = _iOSPayData;
|
||
dict["openid"] = KPlatform.Instance.openId;
|
||
dict["out_trade_no"] = payInfo.trade_no;
|
||
dict["goods_id"] = payInfo.payKey;
|
||
dict["goods_price"] = (payInfo.buyAmount * 10).ToString();
|
||
dict["goods_name"] = payInfo.payName;
|
||
dict["player_id"] = payInfo.userId;
|
||
dict["notify_path"] = ServerProxy.SERVER_URL + "/api/iospay/delivery";
|
||
dict["sandbox"] = envVersion == "develop" ? "1" : "";
|
||
NavigateToMiniProgramOption navigateToMiniProgramOption = new NavigateToMiniProgramOption
|
||
{
|
||
appId = "wx5576c8e128f9902f",
|
||
path = "pages/pay/pay",
|
||
extraData = dict,
|
||
};
|
||
//if (envVersion == "develop")
|
||
// navigateToMiniProgramOption.envVersion = "trial";
|
||
WX.NavigateToMiniProgram(navigateToMiniProgramOption);
|
||
}
|
||
Dictionary<string, string> _iOSPayData;
|
||
|
||
private void OnPayResultSuccess(GeneralCallbackResult result)
|
||
{
|
||
_payCallback?.Invoke(0, result.errMsg);
|
||
_payCallback = null;
|
||
}
|
||
|
||
private void OnPayResultFail(MidasPaymentError response)
|
||
{
|
||
_payCallback?.Invoke(1, response.errMsg);
|
||
_payCallback = null;
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 剪切板
|
||
|
||
public void SetClipboardData(string data)
|
||
{
|
||
var param = new SetClipboardDataOption
|
||
{
|
||
data = data
|
||
};
|
||
WX.SetClipboardData(param);
|
||
}
|
||
|
||
public void GetClipboardData(Callback3 callback)
|
||
{
|
||
var param = new GetClipboardDataOption
|
||
{
|
||
success = (response) =>
|
||
{
|
||
callback?.Invoke(0, "", response.data);
|
||
},
|
||
fail = (response) =>
|
||
{
|
||
callback?.Invoke(1, response.errMsg, null);
|
||
}
|
||
};
|
||
WX.GetClipboardData(param);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 分享和跳转
|
||
|
||
Callback2 _shareCallback;
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="shareInfo"></param>
|
||
/// <param name="callback"></param>
|
||
public void Share(ShareInfo shareInfo, Callback2 callback)
|
||
{
|
||
_shareCallback = callback;
|
||
|
||
ShareAppMessageOption shareParam = new ShareAppMessageOption();
|
||
shareParam.query = shareInfo.data;
|
||
shareParam.title = shareInfo.title;
|
||
|
||
shareParam.imageUrl = shareInfo.imgUrl;
|
||
if (!string.IsNullOrEmpty(shareParam.imageUrlId))
|
||
shareParam.imageUrlId = shareInfo.imgUrlId;
|
||
WX.ShareAppMessage(shareParam);
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="error"></param>
|
||
/// <param name="message"></param>
|
||
private void OnShare(int error, string message)
|
||
{
|
||
_shareCallback?.Invoke(0, message);
|
||
_shareCallback = null;
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="appId"></param>
|
||
/// <param name="extraData"></param>
|
||
public void JumpToApp(string appId, object extraData)
|
||
{
|
||
NavigateToMiniProgramOption navigateToMiniProgramOption = new NavigateToMiniProgramOption
|
||
{
|
||
appId = appId,
|
||
};
|
||
//WXNavigateToMiniProgramParam param = new WXNavigateToMiniProgramParam
|
||
//{
|
||
// appId = appId,
|
||
// extraData = extraData,
|
||
//};
|
||
WX.NavigateToMiniProgram(navigateToMiniProgramOption);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 交互
|
||
|
||
/// <summary>
|
||
/// 显示 loading 提示框。需主动调用 wx.hideLoading 才能关闭提示框
|
||
/// </summary>
|
||
/// <param name="title"></param>
|
||
/// <param name="mask">是否显示透明蒙层,防止触摸穿透</param>
|
||
public void ShowLoading(string title, bool mask)
|
||
{
|
||
var param = new ShowLoadingOption()
|
||
{
|
||
title = title,
|
||
mask = mask,
|
||
};
|
||
WX.ShowLoading(param);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 隐藏 loading 提示框
|
||
/// </summary>
|
||
public void HideLoading()
|
||
{
|
||
var param = new HideLoadingOption();
|
||
WX.HideLoading(param);
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public void ShowToast()
|
||
{
|
||
var param = new ShowToastOption();
|
||
WX.ShowToast(param);
|
||
}
|
||
|
||
public void HideToast()
|
||
{
|
||
var param = new HideToastOption();
|
||
WX.HideToast(param);
|
||
}
|
||
|
||
public void ShowModal()
|
||
{
|
||
var param = new ShowModalOption();
|
||
WX.ShowModal(param);
|
||
}
|
||
|
||
public void CreateGameClubButton()
|
||
{
|
||
var param = new WXCreateGameClubButtonParam();
|
||
WX.CreateGameClubButton(param);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 开放域数据
|
||
|
||
public void ShowOpenData(Texture texture, int x, int y, int w, int h)
|
||
{
|
||
WX.ShowOpenData(texture, x, y, w, h);
|
||
}
|
||
|
||
public void HideOpenData()
|
||
{
|
||
WX.HideOpenData();
|
||
}
|
||
|
||
public void SetUserCloudStorage(IDictionary<string, string> kvData, Callback2 callback)
|
||
{
|
||
var param = new SetUserCloudStorageOption
|
||
{
|
||
success = (response) => callback?.Invoke(0, response.errMsg),
|
||
fail = (response) => callback?.Invoke(1, response.errMsg),
|
||
};
|
||
if (kvData != null)
|
||
{
|
||
param.KVDataList = new KVData[kvData.Count];
|
||
int i = 0;
|
||
foreach (var item in kvData)
|
||
{
|
||
param.KVDataList[i++] = new KVData { key = item.Key, value = item.Value };
|
||
}
|
||
}
|
||
WX.SetUserCloudStorage(param);
|
||
}
|
||
|
||
public void RemoveUserCloudStorage(ICollection<string> keys, Callback2 callback)
|
||
{
|
||
var param = new RemoveUserCloudStorageOption
|
||
{
|
||
success = (response) => callback?.Invoke(0, response.errMsg),
|
||
fail = (response) => callback?.Invoke(1, response.errMsg),
|
||
};
|
||
if (keys != null)
|
||
{
|
||
param.keyList = new string[keys.Count];
|
||
int i = 0;
|
||
foreach (var item in keys)
|
||
{
|
||
param.keyList[i++] = item;
|
||
}
|
||
}
|
||
WX.RemoveUserCloudStorage(param);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 振动
|
||
|
||
string[] _vibrateType = new string[]
|
||
{
|
||
"heavy",
|
||
"medium",
|
||
"light"
|
||
};
|
||
/// <summary>
|
||
/// 震动强度类型,有效值为:heavy、medium、light
|
||
/// </summary>
|
||
public void VibrateShort(int type)
|
||
{
|
||
VibrateShortOption option = new VibrateShortOption
|
||
{
|
||
type = _vibrateType[type],
|
||
};
|
||
WX.VibrateShort(option);
|
||
}
|
||
|
||
public void VibrateLong()
|
||
{
|
||
VibrateLongOption option = new VibrateLongOption
|
||
{
|
||
|
||
};
|
||
WX.VibrateLong(option);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 声音
|
||
|
||
public void PreLoadMusic()
|
||
{
|
||
}
|
||
|
||
WXInnerAudioContext _lastMusicContext;
|
||
public void PlayMusic(string musicPath, float volume)
|
||
{
|
||
if (!WXInnerAudioContext.Dict.TryGetValue(musicPath, out var musicContext))
|
||
{
|
||
musicContext = WX.CreateInnerAudioContext(new InnerAudioContextParam()
|
||
{
|
||
src = musicPath,
|
||
volume = volume,
|
||
loop = true,
|
||
needDownload = true
|
||
});
|
||
}
|
||
|
||
if (_lastMusicContext != null)
|
||
{
|
||
_lastMusicContext.Stop();
|
||
_lastMusicContext = null;
|
||
}
|
||
|
||
musicContext.OnCanplay(() =>
|
||
{
|
||
musicContext.Play();
|
||
_lastMusicContext = musicContext;
|
||
});
|
||
}
|
||
|
||
public void PauseMusic(bool pause)
|
||
{
|
||
if (_lastMusicContext != null)
|
||
if (pause)
|
||
{
|
||
_lastMusicContext.Stop();
|
||
}
|
||
else
|
||
{
|
||
_lastMusicContext.Play();
|
||
}
|
||
}
|
||
|
||
public void PreLoadShortAudio(string[] audios)
|
||
{
|
||
WX.ShortAudioPlayer.PreLoadAudio(audios);
|
||
}
|
||
|
||
public void PlayShortAudio(string audio, float volume)
|
||
{
|
||
WX.ShortAudioPlayer.StopOthersAndPlay(audio, volume);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 上报数据
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="key"></param>
|
||
/// <param name="value"></param>
|
||
public void SetEventCommonHeader(string key, string value)
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// 上报v3事件。
|
||
/// Ons the event v3.
|
||
/// </summary>
|
||
/// <param name="label">Label. 事件名,应用内需唯一 .</param>
|
||
/// <param name="paramJson">Parameter. 事件参数 json .</param>
|
||
public void ReportEvent(string label, string paramJson)
|
||
{
|
||
}
|
||
|
||
/// 用于分支相关的UI组件(一般是按钮)相关事件的上报,事件目前有曝光、点击两种
|
||
/// </summary>
|
||
/// <param name="branchId">分支ID,在「小程序管理后台」获取</param>
|
||
/// <param name="branchDim">自定义维度</param>
|
||
/// <param name="eventType">事件类型,1:曝光; 2:点击</param>
|
||
public void ReportUserBehaviorBranchAnalytics(string branchId, string branchDim, int eventType)
|
||
{
|
||
WX.ReportUserBehaviorBranchAnalytics(branchId, branchDim, eventType);
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 其它
|
||
|
||
public void OpenCustomerServiceConversation()
|
||
{
|
||
var param = new OpenCustomerServiceConversationOption
|
||
{
|
||
showMessageCard = false,
|
||
sendMessageTitle = "我是小客服oooooo",
|
||
sendMessageImg = "https://bingdu-kunpo.oss-cn-hangzhou.aliyuncs.com/sanguo/wxShare/other/rechargeTop.png",
|
||
complete = (response) =>
|
||
{
|
||
Debug.Log("客服 " + response.errMsg);
|
||
}
|
||
};
|
||
WX.OpenCustomerServiceConversation(param);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 应用内引导评分
|
||
/// </summary>
|
||
public void InAppRating()
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// 验证敏感词.
|
||
/// </summary>
|
||
/// <param name="sensitiveWords">输入的敏感词信息.</param>
|
||
/// <param name="verifyResult">返回的敏感词结果.</param>
|
||
public void VerifySensitiveWords(string sensitiveWords, System.Action<int> verifyResult)
|
||
{
|
||
verifyResult?.Invoke(0);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 播放品牌特效.
|
||
/// </summary>
|
||
/// <param name="portrait">游戏是否竖屏,竖屏游戏填true,横屏游戏填false.</param>
|
||
/// <param name="splashBrandEffectListener">品牌特效完成回调.</param>
|
||
public void PlaySplashBrandEffect(bool portrait, System.Action splashBrandEffectAction)
|
||
{
|
||
//LightGameSDK.PlaySplashBrandEffect(portrait, splashBrandEffectAction);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// openwebview
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
public void OpenWebView(string url)
|
||
{
|
||
Application.OpenURL(url);
|
||
}
|
||
|
||
public void Logoff(Action<string> onSuccess, Action<int, string> onFail)
|
||
{
|
||
|
||
}
|
||
|
||
public void OpenUserProtocol()
|
||
{
|
||
}
|
||
|
||
public void OpenPrivacyProtocol()
|
||
{
|
||
}
|
||
|
||
public void OpenIdentifyProtocol()
|
||
{
|
||
}
|
||
|
||
public void ClearCache()
|
||
{
|
||
if (WX.CleanAllFileCache())
|
||
{
|
||
WX.ExitMiniProgram(new ExitMiniProgramOption
|
||
{
|
||
success = reslut => { },
|
||
fail = result => { },
|
||
});
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|