171 lines
6.6 KiB
C#
171 lines
6.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using HC;
|
||
using JetBrains.Annotations;
|
||
|
||
public partial class HCSDKManager
|
||
{
|
||
protected override void OnInstanceCreate()
|
||
{
|
||
base.OnInstanceCreate();
|
||
#if UNITY_WEBGL || WEBGL_BYTEDANCE
|
||
var hcWebGLSdkManager = HCWebGLSDKManager.Instance;
|
||
#endif
|
||
}
|
||
|
||
public void Share(string title, [CanBeNull] string imgUrl = null, [CanBeNull] string content = null, [CanBeNull] Action<bool> callback = null, int type = 0)
|
||
{
|
||
#if UNITY_WEBGL || WEBGL_BYTEDANCE
|
||
HCWebGLSDKManager.Share.Share(title, imgUrl, content, callback);
|
||
#else
|
||
// TODO 暂时不支持
|
||
callback?.Invoke(false);
|
||
#endif
|
||
}
|
||
|
||
public void ExitApp()
|
||
{
|
||
HCWebGLSDKManager.Base.ExitApp();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 购买
|
||
/// </summary>
|
||
/// <param name="paymentArgs"></param>
|
||
public void Buy(HCPaymentArgs paymentArgs)
|
||
{
|
||
HCAnalyticsManager.Instance.IAPBtnClick(paymentArgs.productName, paymentArgs.gameExtraParam, "CNY", paymentArgs.money, paymentArgs.gameExtraParam);
|
||
#if UNITY_WEBGL || WEBGL_BYTEDANCE
|
||
HCWebGLSDKManager.Purchase.Buy(paymentArgs);
|
||
#endif
|
||
}
|
||
|
||
/// <summary>
|
||
/// 奖励下发成功
|
||
/// </summary>
|
||
/// <param name="orderID"></param>
|
||
public void Awarded(string orderID)
|
||
{
|
||
#if UNITY_WEBGL || WEBGL_BYTEDANCE
|
||
HCWebGLSDKManager.Purchase.Awarded(orderID);
|
||
#endif
|
||
}
|
||
|
||
|
||
#if WEBGL_BYTEDANCE
|
||
public void DyShare(Action<bool> callback, StarkSDKSpace.UNBridgeLib.LitJson.JsonData jsonData)
|
||
{
|
||
var json = jsonData.ToJson();
|
||
HCDebugger.LogDebug("分享:" + json);
|
||
HCWebGLSDKManager.Share.DYShare(callback, jsonData);
|
||
}
|
||
|
||
public void DyShareRecordVideo(string title, string[] videoTopicList, Action<bool, string, Dictionary<string, object>> callback)
|
||
{
|
||
HCDebugger.LogDebug($"[DyShareRecordVideo] title = {title} videoTopicList = {videoTopicList}");
|
||
var topics = new List<string>();
|
||
if (videoTopicList != null)
|
||
{
|
||
topics.AddRange(videoTopicList);
|
||
}
|
||
|
||
StarkSDKSpace.StarkSDK.API.GetStarkGameRecorder().ShareVideoWithTitleTopics(result =>
|
||
{
|
||
HCDebugger.LogDebug($"[DyShareRecordVideo] [successCallback]");
|
||
callback?.Invoke(true, "success", result);
|
||
}, msg =>
|
||
{
|
||
HCDebugger.LogDebug($"[DyShareRecordVideo] [failedCallback] msg = {msg}");
|
||
callback?.Invoke(false, msg, new Dictionary<string, object>());
|
||
}, () =>
|
||
{
|
||
HCDebugger.LogDebug($"[DyShareRecordVideo] [cancelledCallback]");
|
||
callback?.Invoke(false, "cancelled", new Dictionary<string, object>());
|
||
}, title,
|
||
topics);
|
||
}
|
||
|
||
public void DyShareVideo(string videoPath, string title, string[] videoTopicList, string[] hashtagList, Action<bool> callback)
|
||
{
|
||
var videoTopics = new StarkSDKSpace.UNBridgeLib.LitJson.JsonData();
|
||
videoTopics.SetJsonType(StarkSDKSpace.UNBridgeLib.LitJson.JsonType.Array);
|
||
if (videoTopicList != null)
|
||
{
|
||
foreach (var s in videoTopicList)
|
||
{
|
||
videoTopics.Add(s);
|
||
}
|
||
}
|
||
|
||
var hashtags = new StarkSDKSpace.UNBridgeLib.LitJson.JsonData();
|
||
hashtags.SetJsonType(StarkSDKSpace.UNBridgeLib.LitJson.JsonType.Array);
|
||
if (hashtagList != null)
|
||
{
|
||
foreach (var s in hashtagList)
|
||
{
|
||
hashtags.Add(s);
|
||
}
|
||
}
|
||
|
||
var jsonData = new StarkSDKSpace.UNBridgeLib.LitJson.JsonData
|
||
{
|
||
["channel"] = "video",
|
||
["title"] = title,
|
||
["extra"] = new()
|
||
{
|
||
["videoPath"] = videoPath,
|
||
["videoTopics"] = videoTopics,
|
||
["hashtag_list"] = hashtags,
|
||
},
|
||
};
|
||
DyShare(callback, jsonData);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 开始录屏
|
||
/// <param name="isRecordAudio">是否录制声音,默认为录制声音</param>
|
||
/// <param name="maxRecordTimeSec">最大录制时长,单位 s。小于等于 0 则无限制。默认为10分钟</param>
|
||
/// <param name="startCallback">视频录制开始回调</param>
|
||
/// <param name="errorCallback">视频录制失败回调</param>
|
||
/// </summary>
|
||
/// <returns>函数调用状态,调用成功返回true,否则返回false</returns>
|
||
public bool StartRecord(bool isRecordAudio, int maxRecordTimeSec = 600, Action startCallback = null, Action<int, string> errorCallback = null, Action<string> timeoutCallback = null)
|
||
{
|
||
return ((HCBytedanceBase)HCWebGLSDKManager.Base).StartRecord(isRecordAudio, maxRecordTimeSec, startCallback, errorCallback, timeoutCallback);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 停止录屏
|
||
/// <param name="completeCallback">视频录制完成回调</param>
|
||
/// <param name="errorCallback">视频录制失败回调</param>
|
||
/// <param name="clipRanges">停止后需要对视频进行裁剪的时间片段,如果为null或空列表,则不对视频进行裁剪</param>
|
||
/// <param name="autoMerge">是否对视频裁剪片段进行自动合并。
|
||
/// 合并规则:
|
||
/// 如果有两段重叠的时间片段,并且重叠部分小于等于1秒,则对这两段进行合并为一段
|
||
/// 若autoMerge为true,比如时间片段为{[1000, 5000], [4000, 7000]},会被合并为{[1000, 7000]}。
|
||
/// 若autoMerge为false,将按原始传入的时间片段进行裁剪,是否有重叠,由调用方保证。主要用于自定义裁剪。 </param>
|
||
/// </summary>
|
||
/// <returns>函数调用状态,调用成功返回true,否则返回false</returns>
|
||
public bool StopRecord(Action<string> completeCallback = null, Action<int, string> errorCallback = null, List<TimeRange> clipRanges = null, bool autoMerge = true)
|
||
{
|
||
return ((HCBytedanceBase)HCWebGLSDKManager.Base).StopRecord(completeCallback, errorCallback, clipRanges, autoMerge);
|
||
}
|
||
|
||
public void CheckScene(string scene, Action<bool> success, Action complete, Action<int, string> error)
|
||
{
|
||
((HCBytedanceBase)HCWebGLSDKManager.Base).CheckScene(scene, success, complete, error);
|
||
}
|
||
|
||
public void NavigateToScene(string scene, Action success, Action complete, Action<int, string> error)
|
||
{
|
||
((HCBytedanceBase)HCWebGLSDKManager.Base).NavigateToScene(scene, success, complete, error);
|
||
}
|
||
|
||
public void OnShowWithDict(Action<Dictionary<string, object>> paramCallback)
|
||
{
|
||
((HCBytedanceBase)HCWebGLSDKManager.Base).OnShowWithDict(paramCallback);
|
||
}
|
||
#endif
|
||
} |