跳到主要内容

DeepLink 的回调(DeepLinkBaseResultObserver)

如果您使用的是 Unreal Engine,请参见 Unreal Engine SDK 的 DeepLinkBaseResultObserver

注意

原生层接收到 DeepLink 数据后会保存在 SDK 中,需要游戏侧调用 Fetch 主动获取数据。调用 Fetch 后,DeepLink 数据会被清除。

注意

强烈建议游戏在应用启动函数中进行注册。

函数定义

// 设置 DeepLink 回调,通知引擎层是否有数据到达,收到回调后,手动调用 Fetch 功能获取数据。
public static void SetDeepLinkObserver(OnINTLResultHandler<INTLBaseResult> callback);

// 移除 DeepLink 回调
public static void RemoveDeepLinkObserver(OnINTLResultHandler<INTLBaseResult> callback);

代码示例

// 增加回调
public void SetDeepLinkObserver()
{
INTLAPI.SetDeepLinkObserver(OnDeepLinkResult);
}

// 移除回调
public void RemoveDeepLinkObserver()
{
INTLAPI.RemoveDeepLinkObserver(OnDeepLinkResult);
}

// 处理回调数据
private void OnDeepLinkResult(INTLBaseResult result)
{
m_sample.ShowLogInNewLine("OnDeepLinkResult");

// 有数据到达,调用 Fetch 获取
string deeplinkret = ToolApiCall.Instance.Fetch();
object jsonresult = Json.Deserialize(deeplinkret);
var dict = jsonresult as Dictionary<string, object>;
string url = "";
if (dict.ContainsKey("url"))
{
url = dict["url"] as string;
}

if (result.RetCode != 0)
{
m_sample.ShowLogInNewLine("failed to parse params.");
return;
}

Dictionary<string, string> parameret = new Dictionary<string, string>();
if (dict.ContainsKey("params"))
{
object par = dict["params"];
Dictionary<string, object> paramer = par as Dictionary<string, object>;
foreach (string key in paramer.Keys)
{
parameret.Add(key, paramer[key] as string);
}
}
if (url != "")
{

ShowLogInNewLine("url:");
ShowLogInNewLine(url);
ShowLogInNewLine("params:");
foreach (string key in parameret.Keys)
{
ShowLogInNewLine(key + ":" + parameret[key]);
}
}
}