private static async Task LaunchSafariViewController(Uri uri, BrowserLaunchOptions options) { var nativeUrl = new NSUrl(uri.AbsoluteUri); #pragma warning disable CA1416 // TODO: 'SFSafariViewController(NSUrl, bool)' is unsupported on: 'ios' 11.0 and later, there is an overload SFSafariViewController(NSUrl, SFSafariViewControllerConfiguration) supported from ios 11.0+ var sfViewController = new SFSafariViewController(nativeUrl, false); #pragma warning restore CA1416 // probably need to call the overloads depending on OS version var vc = WindowStateManager.Default.GetCurrentUIViewController(true) !; if (options.PreferredToolbarColor != null) { sfViewController.PreferredBarTintColor = options.PreferredToolbarColor.AsUIColor(); } if (options.PreferredControlColor != null) { sfViewController.PreferredControlTintColor = options.PreferredControlColor.AsUIColor(); } if (sfViewController.PopoverPresentationController != null) { sfViewController.PopoverPresentationController.SourceView = vc.View !; } if (options.HasFlag(BrowserLaunchFlags.PresentAsFormSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.FormSheet; } else if (options.HasFlag(BrowserLaunchFlags.PresentAsPageSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; } await vc.PresentViewControllerAsync(sfViewController, true); }
private static async Task LaunchSafariViewController(Uri uri, BrowserLaunchOptions options) { var nativeUrl = new NSUrl(uri.AbsoluteUri); var sfViewController = new SFSafariViewController(nativeUrl, false); var vc = WindowStateManager.Default.GetCurrentUIViewController(true) !; if (options.PreferredToolbarColor != null) { sfViewController.PreferredBarTintColor = options.PreferredToolbarColor.AsUIColor(); } if (options.PreferredControlColor != null) { sfViewController.PreferredControlTintColor = options.PreferredControlColor.AsUIColor(); } if (sfViewController.PopoverPresentationController != null) { sfViewController.PopoverPresentationController.SourceView = vc.View !; } if (options.HasFlag(BrowserLaunchFlags.PresentAsFormSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.FormSheet; } else if (options.HasFlag(BrowserLaunchFlags.PresentAsPageSheet)) { sfViewController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; } await vc.PresentViewControllerAsync(sfViewController, true); }
static void LaunchChromeTabs(BrowserLaunchOptions options, AndroidUri?nativeUri) { var tabsBuilder = new CustomTabsIntent.Builder(); tabsBuilder.SetShowTitle(true); #pragma warning disable CS0618 // Type or member is obsolete if (options.PreferredToolbarColor != null) { tabsBuilder.SetToolbarColor(options.PreferredToolbarColor.ToInt()); } #pragma warning restore CS0618 // Type or member is obsolete if (options.TitleMode != BrowserTitleMode.Default) { tabsBuilder.SetShowTitle(options.TitleMode == BrowserTitleMode.Show); } var tabsIntent = tabsBuilder.Build(); ActivityFlags?tabsFlags = null; Context?context = ActivityStateManager.Default.GetCurrentActivity(false); if (context == null) { context = Application.Context; // If using ApplicationContext we need to set ClearTop/NewTask (See #225) tabsFlags = ActivityFlags.ClearTop | ActivityFlags.NewTask; } #if __ANDROID_24__ if (OperatingSystem.IsAndroidVersionAtLeast(24)) { if (options.HasFlag(BrowserLaunchFlags.LaunchAdjacent)) { if (tabsFlags.HasValue) { tabsFlags |= ActivityFlags.LaunchAdjacent | ActivityFlags.NewTask; } else { tabsFlags = ActivityFlags.LaunchAdjacent | ActivityFlags.NewTask; } } } #endif // Check if there's flags specified to use if (tabsFlags.HasValue) { tabsIntent.Intent.SetFlags(tabsFlags.Value); } if (nativeUri != null) { tabsIntent.LaunchUrl(context, nativeUri); } }
static void LaunchExternalBrowser(BrowserLaunchOptions options, AndroidUri?nativeUri) { var intent = new Intent(Intent.ActionView, nativeUri); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; #if __ANDROID_24__ if (OperatingSystem.IsAndroidVersionAtLeast(24)) { if (options.HasFlag(BrowserLaunchFlags.LaunchAdjacent)) { flags |= ActivityFlags.LaunchAdjacent; } } #endif intent.SetFlags(flags); if (!PlatformUtils.IsIntentSupported(intent)) { throw new FeatureNotSupportedException(); } Application.Context.StartActivity(intent); }