xamarin表单应用程序链接 - 从ios app delegate打开PCL视图

时间:2018-02-08 13:30:03

标签: c# ios xamarin.forms applinks

在Xamarin Forms跨平台应用中,我可以通过外部电子邮件应用链接打开该应用。

它在android中打开就好了,通过向清单添加一个意图,然后在开始的活动中,我创建了另一个触发主要活动的意图

public class AppLinkActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        string code = null;
        if (Intent.Data.Query != null)
        {
            code = Intent.Data.Query.Substring(Intent.Data.Query.LastIndexOf('=') + 1);
        }

        if (Intent.Data != null)
        {
            var uri = Intent.Data;
            if (uri != null)
            {
                Intent i = new Intent(this, typeof(MainActivity));
                i.AddFlags(ActivityFlags.ReorderToFront);
                i.PutExtra("code", code);
                i.PutExtra("flag", true);
                this.StartActivity(i);
            }
        }
        this.FinishActivity(0);
    }
}

在ios中,applink触发了应用委托中OpenUrl的覆盖,但我不确定如何从这里导航到特定的PCL页面,应用程序会在其最后打开的页面打开

public override bool OpenUrl(UIApplication app, NSUrl url, string sourceApp, NSObject annotation)
{
    string _uri = url.ToString();
    string code = _uri.Substring(_uri.LastIndexOf('=') + 1);

    LoadApplication(new App(true, code));
    return true;
}

有人能指出我正确的方向吗?我真正需要做的是,从OpenUrl方法导航到PCL中的视图

1 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人,我通过替换

对此进行了排序
LoadApplication(new App(true, code));

App.Current.MainPage = enterPin();

调用

public Page enterPin()
 {
       return new EnterPinPage(SimpleIoc.Default.GetInstance<ISecureStorage>(), code, 1);
 }