跳到主要内容

DeepLink 的回调(DeepLinkBaseResultObserver)

如果您使用的是 Unity 引擎,请参见 Unity SDK 的 DeepLinkBaseResultObserver

注意

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

注意

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

函数定义

C++ 事件处理法(V1.15 以上)

//配置回调
void SetDeepLinkObserver(FINTLDeepLinkEvent& callback);
//获取回调
FINTLDeepLinkEvent& GetDeepLinkObserver();

Unreal Engine 事件处理法

UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "INTLSDKObserver")
void OnDeepLinkResult(FINTLBaseResult ret);
virtual void OnDeepLinkResult_Implementation(FINTLBaseResult ret) {};

代码示例

// DeepLink 回调
void OnDeepLinkResult_Implementation(FINTLBaseResult ret)
{
AppendResultText("DeepLinkResult:");
if (ret.RetCode == ErrorCode::SUCCESS) {
UE_LOG(LogTemp, Warning, TEXT("[OnDeepLinkResultNotify] Sucessed MethodId:%d"), ret.MethodId);
}
else {
UE_LOG(LogTemp, Warning, TEXT("[OnDeepLinkResultNotify] Failed MethodId:%d"), ret.MethodId);
}

// 有数据到达,调用 Fetch 获取
FString url = UINTLSDKAPI::Fetch();
FString jsonurl = "";
TMap<FString, FString> Params;
TSharedPtr<FJsonObject> json;
TSharedRef<TJsonReader<TCHAR>> jsonReader = TJsonReaderFactory<TCHAR>::Create(url);
if (FJsonSerializer::Deserialize(jsonReader, json))
{
jsonurl = json->GetStringField("url");
TSharedPtr<FJsonObject> JsonMap = json->GetObjectField("params");
for (auto KeyValueIt = JsonMap->Values.CreateConstIterator(); KeyValueIt; ++KeyValueIt)
{
FString Value = JsonMap->GetStringField(KeyValueIt.Key());
Params.Add(KeyValueIt.Key(), Value);
}
}
if (jsonurl != "")
{
AppendResultText("url:");
AppendResultText(jsonurl);
AppendResultText("Params:");
for (TMap<FString, FString>::TConstIterator iter(Params); iter; ++iter)
{
AppendResultText(FString::Printf(TEXT(" %s : %s"), *iter->Key, *iter->Value));
}
}
}