diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs b/Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs index a4342473..78dc6dca 100644 --- a/Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs +++ b/Xamarin.Forms.Platform.iOS/FormsApplicationDelegate.cs @@ -5,10 +5,12 @@ using System.Text; #if __UNIFIED__ using Foundation; using UIKit; +using CoreSpotlight; #else using MonoTouch.Foundation; using MonoTouch.UIKit; +using MonoTouch.CoreSpotlight; #endif namespace Xamarin.Forms.Platform.iOS @@ -25,6 +27,7 @@ namespace Xamarin.Forms.Platform.iOS public override bool ContinueUserActivity(UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler) { + CheckForAppLink(userActivity); return true; } @@ -77,6 +80,7 @@ namespace Xamarin.Forms.Platform.iOS public override void UserActivityUpdated(UIApplication application, NSUserActivity userActivity) { + CheckForAppLink(userActivity); } // from background to foreground, not yet active @@ -121,6 +125,7 @@ namespace Xamarin.Forms.Platform.iOS Application.Current = application; _application = application; + (application as IApplicationController)?.SetAppIndexingProvider(new IOSAppIndexingProvider()); application.PropertyChanged += ApplicationOnPropertyChanged; } @@ -131,6 +136,29 @@ namespace Xamarin.Forms.Platform.iOS UpdateMainPage(); } + void CheckForAppLink(NSUserActivity userActivity) + { + var strLink = string.Empty; + + switch (userActivity.ActivityType) + { + case "NSUserActivityTypeBrowsingWeb": + strLink = userActivity.WebPageUrl.AbsoluteString; + break; + case "com.apple.corespotlightitem": + if (userActivity.UserInfo.ContainsKey(CSSearchableItem.ActivityIdentifier)) + strLink = userActivity.UserInfo.ObjectForKey(CSSearchableItem.ActivityIdentifier).ToString(); + break; + default: + if (userActivity.UserInfo.ContainsKey(new NSString("link"))) + strLink = userActivity.UserInfo[new NSString("link")].ToString(); + break; + } + + if (!string.IsNullOrEmpty(strLink)) + _application.SendOnAppLinkRequestReceived(new Uri(strLink)); + } + void SetMainPage() { UpdateMainPage(); |