如何制作 Firebase ShortDynamicLink Xamarin.Android

How to make Firebase ShortDynamicLink Xamarin.Android

我想为 Xamarin.Android 设置 Firebase Dynamic Link。所以我做了如下代码。

[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");
        }
    }
}

长动态Link制作精良。但是,由于 task.IsSuccessful 值为 false.

,因此无法创建 Short DynamicLink

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

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://'。我会保留这个问题,因为其他人可能会出错。