Глубокая связь с использованием заклепок с Xamarins.Forms

Поэтому, когда пользователь на моем сайте запрашивает новый пароль, я отправляю ссылку на его адрес электронной почты, которая ведет на мой сайт, где у меня есть эти заголовки. Мое мобильное приложение должно открыться.

Я установил через NuGet пакет Rivets в свой проект Android Xamarin.

Это мое MainActivity.cs код:

using System;
using Android.App;
using Android.Content.PM;
using Android.OS;
using TinyIoC;
using XLabs.Forms;
using XLabs.Ioc;
using XLabs.Platform.Device;
using Android.Content;
using Android.Preferences;
using XLabs.Platform.Services;
using XLabs.Platform.Services.Media;

namespace HalliganTL.Droid
{
    [Activity(Label = "Halligan", 
        Icon = "@drawable/icon", 
        MainLauncher = true, 
        ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    [IntentFilter(new[] { Android.Content.Intent.ActionView },
        DataScheme = "halligan",
        DataHost = "resetpassword",
        Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable })]
    public class MainActivity : XFormsApplicationDroid, IDeviceStorage
    {
        #region IDeviceStorage implementation
        public string LoadString(string key, string def = null)
        {
            ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            return prefs.GetString(key, def);
        }

        public void SaveString(string key, string value)
        {
            ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
            ISharedPreferencesEditor editor = prefs.Edit();
            editor.PutString(key, value);
            editor.Apply();
        }
        #endregion

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            global::Xamarin.Forms.Forms.Init(this, bundle);
            if (!Resolver.IsSet) SetIoc();

            //We're gonna check if we opened the app from a web link
            var resetPasswordToken = string.Empty;
            Rivets.AppLinkUrl alUrl = null;

            // Parse our AppLinkUrl from the Intent Data Uri
            if (Intent.Data != null)
            {
                alUrl = new Rivets.AppLinkUrl(Intent.Data.ToString());
            }

            if (alUrl != null && alUrl.TargetQueryParameters.ContainsKey("token"))
                resetPasswordToken = alUrl.TargetQueryParameters["token"];

            if (string.IsNullOrEmpty(resetPasswordToken))
            {
                LoadApplication(new App());
            } 
            else
            {
                LoadApplication(new App(resetPasswordToken));
            }
        }

        private void SetIoc()
        {
            var container = TinyIoCContainer.Current;
            container.Register<IDeviceStorage>(this);
            container.Register<IDevice>(AndroidDevice.CurrentDevice);
            container.Register<IMediaPicker, MediaPicker>();
            container.Register<ISecureStorage>(new KeyVaultStorage(container.Resolve<IDevice>().Id.ToCharArray()));
            Resolver.SetResolver(new XLabs.Ioc.TinyIOC.TinyResolver(container));
        }

    }
}

И ничего не происходит.

Кстати, я использую версию Rivets 1.0.2, потому что более новые из них выдавали "ошибку ссылок на сборки", говоря, что мой проект имеет "MonoAndroid, Version=v6.0"

Любой совет будет полезен,

0 ответов

Другие вопросы по тегам