/// <summary> /// Initializes Mobile core for Android. /// </summary> /// <param name="app">Xamarin.Forms.Application object</param> /// <param name="options">additional initialization options</param> public static void Init(Application app, Options options) { IPlatformInjector platformInjector = DependencyService.Get <IPlatformInjector>(); platformInjector.ExecutingAssembly = app.GetType().Assembly; MobileCore.Init(platformInjector, options); }
private MobileCore(IPlatformInjector injector, Options options) { Logger = options.Logger ?? injector?.CreateLogger() ?? new NullLogger(); if (injector != null && options.ConfigFileName != null) { try { using (var stream = injector.GetBundledFileStream(options.ConfigFileName)) { mobileConfiguration = MobileCoreConfiguration.Parse(stream); } } catch (System.Exception e) { throw new InitializationException($"{options.ConfigFileName} could not be loaded", e); } } else { if (options.ConfigJson != null) { try { mobileConfiguration = MobileCoreConfiguration.Parse(options.ConfigJson); } catch (System.Exception e) { throw new InitializationException("invalid JSON configuration file", e); } } else { throw new InitializationException("Must provide either filename or JSON configuration in Init() options"); } } if (options.HttpServiceModule == null) { HttpClientHandler httpClientHandler = new HttpClientHandler(); httpClientHandler.AllowAutoRedirect = options.HttpAllowAutoRedirect; HttpClient httpClient = new HttpClient(httpClientHandler); httpClient.Timeout = TimeSpan.FromSeconds(DEFAULT_TIMEOUT); var httpServiceModule = new SystemNetHttpServiceModule(httpClient); var configuration = GetFirstServiceConfigurationByType(httpServiceModule.Type); if (configuration == null) { configuration = ServiceConfiguration.Builder.Build(); } httpServiceModule.Configure(this, configuration); HttpLayer = httpServiceModule; } else { HttpLayer = options.HttpServiceModule; } }
private MobileCore(IPlatformInjector injector, Options options) { Contract.Requires(options != null); Logger = options.Logger ?? injector?.CreateLogger() ?? new NullLogger(); if (injector != null && options.ConfigFileName != null) { var filename = $"{injector.DefaultResources}.{options.ConfigFileName}"; try { using (var stream = injector.ExecutingAssembly.GetManifestResourceStream(filename)) { servicesConfig = MobileCoreJsonParser.Parse(stream); } } catch (System.Exception e) { throw new InitializationException($"{filename} could not be loaded", e); } } else { if (options.ConfigJson != null) { try { MobileCoreJsonParser.Parse(options.ConfigJson); } catch (System.Exception e) { throw new InitializationException("invalid JSON configuration file", e); } } else { throw new InitializationException("Must provide either filename or JSON configuration in Init() options"); } } if (options.HttpServiceModule == null) { HttpClient httpClient = new HttpClient(); httpClient.Timeout = TimeSpan.FromSeconds(DEFAULT_TIMEOUT); var httpServiceModule = new SystemNetHttpServiceModule(httpClient); var configuration = GetServiceConfiguration(httpServiceModule.Type); if (configuration == null) { configuration = ServiceConfiguration.Builder.Build(); } httpServiceModule.Configure(this, configuration); HttpLayer = httpServiceModule; } else { HttpLayer = options.HttpServiceModule; } }
/// <summary> /// Initializes MobileCore with specific options and with platform-specific injector. /// </summary> /// <param name="injector">platform specific implementation dependency injection module</param> /// <param name="options">initialization options</param> /// <returns>MobileCore singleton instance</returns> public static MobileCore Init(IPlatformInjector injector, Options options) { if (instance != null) { return(instance); } NonNull <Options>(options, "init options"); instance = new MobileCore(injector, options); try { sendAppAndDeviceMetrics(); } catch (System.Exception e) { MobileCore.Instance.Logger.Debug(String.Format("Error publishing device metrics: {0}", e.Message)); } return(instance); }
/// <summary> /// Initializes MobileCore with defaults and with platform-specific injector. /// </summary> /// <param name="injector">platform specific implementation dependency injection module</param> /// <returns>MobileCore singleton instance</returns> public static MobileCore Init(IPlatformInjector injector) => Init(injector, new Options());
/// <summary> /// Initializes MobileCore with specific options and with platform-specific injector. /// </summary> /// <param name="injector">platform specific implementation dependency injection module</param> /// <param name="options">initialization options</param> /// <returns>MobileCore singleton instance</returns> public static MobileCore Init(IPlatformInjector injector, Options options) { NonNull <Options>(options, "init options"); instance = new MobileCore(injector, options); return(instance); }
/// <summary> /// Initializes MobileCore with specific options and with platform-specific injector. /// </summary> /// <param name="injector">platform specific implementation dependency injection module</param> /// <param name="options">initialization options</param> /// <returns>MobileCore singleton instance</returns> public static MobileCore Init(IPlatformInjector injector, Options options) { Contract.Requires(options != null); instance = new MobileCore(injector, options); return(instance); }