#define APPCENTER_UNITY_USE_CRASHES #define APPCENTER_UNITY_USE_ANALYTICS // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. #import "AppCenterStarter.h" #import #import @import AppCenter; #ifdef APPCENTER_UNITY_USE_CRASHES @import AppCenterCrashes; #endif #ifdef APPCENTER_UNITY_USE_ANALYTICS @import AppCenterAnalytics; #endif #ifdef APPCENTER_UNITY_USE_DISTRIBUTE @import AppCenterDistribute; #import "../Distribute/DistributeDelegate.h" #endif enum StartupMode { APPCENTER, ONECOLLECTOR, BOTH, NONE, SKIP }; @implementation AppCenterStarter static NSString *const kMSAppSecret = @"d8e69880-4b16-468e-9216-d0eec8fff482"; static NSString *const kMSTargetToken = @"appcenter-transmission-target-token"; static NSString *const kMSCustomLogUrl = @"custom-log-url"; static NSString *const kMSCustomAllowNetworkRequests = @"YES"; static NSString *const kMSCustomApiUrl = @"custom-api-url"; static NSString *const kMSCustomInstallUrl = @"custom-install-url"; static NSString *const kMSStartTargetKey = @"MSAppCenterStartTargetUnityKey"; static NSString *const kMSStorageSizeKey = @"MSAppCenterMaxStorageSizeUnityKey"; static NSString *const kMSLogUrlKey = @"MSAppCenterLogUrlUnityKey"; static NSString *const kMSAppSecretKey = @"MSAppCenterAppSecretUnityKey"; static NSString *const kMSUpdateTrackKey = @"MSAppCenterUpdateTrackUnityKey"; static const int kMSLogLevel = 0 /*LOG_LEVEL*/; static const int kMSStartupType = 0 /*STARTUP_TYPE*/; static const int kMSUpdateTrack = 1; + (void)load { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startAppCenter) name:UIApplicationDidFinishLaunchingNotification object:nil]; } + (void)startAppCenter { NSNumber *startTarget = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStartTargetKey]; int startTargetValue = startTarget == nil ? kMSStartupType : startTarget.intValue; [MSACAppCenter setLogLevel:(MSACLogLevel)kMSLogLevel]; if (startTargetValue == SKIP) { return; } NSMutableArray *classes = [[NSMutableArray alloc] init]; NSNumber *maxStorageSize = [[NSUserDefaults standardUserDefaults] objectForKey:kMSStorageSizeKey]; if (maxStorageSize != nil) { [MSACAppCenter setMaxStorageSize:maxStorageSize completionHandler:^void(BOOL result) { if (!result) { MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed"); } }]; } else { #ifdef APPCENTER_USE_CUSTOM_MAX_STORAGE_SIZE [MSACAppCenter setMaxStorageSize:APPCENTER_MAX_STORAGE_SIZE completionHandler:^void(BOOL result) { if (!result) { MSACLogWarning(@"MSACAppCenter", @"setMaxStorageSize failed"); } }]; #endif } #ifdef APPCENTER_UNITY_USE_ANALYTICS [classes addObject:MSACAnalytics.class]; #endif #ifdef APPCENTER_UNITY_USE_DISTRIBUTE [MSACDistribute setUpdateTrack:(MSACUpdateTrack)kMSUpdateTrack]; #ifdef APPCENTER_UNITY_USE_CUSTOM_API_URL [MSACDistribute setApiUrl:kMSCustomApiUrl]; #endif // APPCENTER_UNITY_USE_CUSTOM_API_URL #ifdef APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL [MSACDistribute setInstallUrl:kMSCustomInstallUrl]; #endif // APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL #ifdef APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE [MSACDistribute disableAutomaticCheckForUpdate]; #endif // APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE #endif // APPCENTER_UNITY_USE_DISTRIBUTE NSString *customLogUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kMSLogUrlKey]; if (customLogUrl != nil) { [MSACAppCenter setLogUrl:customLogUrl]; } else { #ifdef APPCENTER_UNITY_USE_CUSTOM_LOG_URL [MSACAppCenter setLogUrl:kMSCustomLogUrl]; #endif } [MSACAppCenter setNetworkRequestsAllowed:[kMSCustomAllowNetworkRequests boolValue]]; NSString *customAppSecret = [[NSUserDefaults standardUserDefaults] objectForKey:kMSAppSecretKey]; NSString *customAppSecretValue = customAppSecret == nil ? kMSAppSecret : customAppSecret; switch (startTargetValue) { case APPCENTER: [MSACAppCenter start:customAppSecretValue withServices:classes]; break; case ONECOLLECTOR: [MSACAppCenter start:[NSString stringWithFormat:@"target=%@", kMSTargetToken] withServices:classes]; break; case BOTH: [MSACAppCenter start:[NSString stringWithFormat:@"appsecret=%@;target=%@", customAppSecretValue, kMSTargetToken] withServices:classes]; break; case NONE: [MSACAppCenter startWithServices:classes]; break; } } @end