DeepLink 的回调(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));
}
}
}