如何制作Firebase ShortDynamicLink Xamarin.Android



我想为Xamarin.Android制作Firebase动态链接。所以我编写了如下代码:

[assembly: Xamarin.Forms.Dependency(typeof(DynamicUrl))]
class DynamicUrl : Activity, IMakeDynamicUrl
{

public void MakeDynamicURL(string page)
{
//Make Long DynamicLink 
DynamicLink dynamic = FirebaseDynamicLinks.Instance.CreateDynamicLink()
.SetLink(getPromotionDeepLink(page))
.SetDomainUriPrefix(MyDomain)
.SetAndroidParameters(new DynamicLink.AndroidParameters.Builder().Build())
.BuildDynamicLink();
//Make Short DynamicLink 
Task shortLinkTask = FirebaseDynamicLinks.Instance.CreateDynamicLink()
.SetLink(getPromotionDeepLink(page))
.SetDomainUriPrefix(MyDomain)
.SetAndroidParameters(new DynamicLink.AndroidParameters.Builder().Build())
.BuildShortDynamicLink()
.AddOnCompleteListener(this, new OnCompleteListner());
}
}
这是我的OnCompleteListner代码
class OnCompleteListner : Java.Lang.Object, IOnCompleteListener
{
public void OnComplete(Android.Gms.Tasks.Task task)
{
if (task.IsSuccessful)
{
Console.WriteLine("sucess to make short dynamicLinck");
var link = task.Result.JavaCast<IShortDynamicLink().ShortLink;

//And I'll heanle here!
} else
{
Console.WriteLine("fail to make short dynamicLinck");
}
}
}

Long DynamicLink制作精良。但是,由于task.IsSuccessful的值为false,因此不能创建短动态链接。

所以我做了一些搜索解决方案,找到了下面的代码。

class OnSuccessListner : Java.Lang.Object, IOnSuccessListener
{
TaskCompletionSource<string> _tcs;
public OnSuccessListner(TaskCompletionSource<string> tcs)
{
_tcs = tcs;
}
void IOnSuccessListener.OnSuccess(Java.Lang.Object result)
{
var link = result.JavaCast<IShortDynamicLink>();
_tcs.TrySetResult(link.ShortLink.ToString());
}
}

但是我不知道该给TaskCompletionSource<string>传递什么值

Task shortLinkTask = FirebaseDynamicLinks.Instance.CreateDynamicLink()
.SetLink(getPromotionDeepLink(page))
.SetDomainUriPrefix(MyDomain)
.SetAndroidParameters(new DynamicLink.AndroidParameters.Builder(Package).Build())
.BuildShortDynamicLink()
.AddOnSuccessListner (this, new OnSuccessListner('TaskCompletionSource<string> value here'));

我不知道我做错了什么。

你能告诉我另一种方法或解决方案吗?请帮帮我。

未创建,因为域名地址中缺少" https://' "。我将保留这个问题,因为别人可能会犯错误。

最新更新