Глубокая связь с использованием заклепок с 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"
Любой совет будет полезен,