mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-05 05:07:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,235 @@
|
||||
//
|
||||
// LoadingScreenViewController.m
|
||||
// RobloxMobile
|
||||
//
|
||||
// Created by Kyler Mulherin on 9/27/15.
|
||||
// Copyright © 2015 ROBLOX. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegateROMA.h"
|
||||
|
||||
#import "ABTestManager.h"
|
||||
#import "LoadingScreenViewController.h"
|
||||
#import "LoginManager.h"
|
||||
#import "RBActivityIndicatorView.h"
|
||||
#import "RBXFunctions.h"
|
||||
#import "RobloxData.h"
|
||||
#import "RobloxCachedFlags.h"
|
||||
#import "RobloxInfo.h"
|
||||
#import "RobloxNotifications.h"
|
||||
#import "RobloxTheme.h"
|
||||
#import "RobloxWebUtility.h"
|
||||
#import "SessionReporter.h"
|
||||
#import "StoreManager.h"
|
||||
#import "UpgradeCheckHelper.h"
|
||||
#import "UserInfo.h"
|
||||
|
||||
#import <AdColony/AdColony.h>
|
||||
|
||||
DYNAMIC_FASTSTRING(AdColonyAppId);
|
||||
DYNAMIC_FASTSTRING(AdColonyZoneId);
|
||||
|
||||
///TO DO: MIGRATE ALL INITIALIZATION CODE THAT DOES NOT REQUIRE KNOWLEDGE
|
||||
/// OF THE APP STATE OUT OF THE APP DELEGATE AND INTO THIS SCREEN
|
||||
|
||||
@interface LoadingScreenViewController ()
|
||||
|
||||
@property IBOutlet UILabel* lblMessage;
|
||||
@property IBOutlet RBActivityIndicatorView* loadingSpinner;
|
||||
@property IBOutlet UIImageView* imgLogo;
|
||||
|
||||
@property (nonatomic) int completedTasks;
|
||||
|
||||
@property (nonatomic) BOOL initializingDevice;
|
||||
|
||||
@property (nonatomic) NSDate* initializationStartTime;
|
||||
|
||||
@end
|
||||
|
||||
@implementation LoadingScreenViewController
|
||||
|
||||
//Life Cycle Functions
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
[_lblMessage setText:NSLocalizedString(@"LoadingWord", nil)];
|
||||
[_lblMessage setHidden:YES];
|
||||
|
||||
[_loadingSpinner setHidden:YES];
|
||||
}
|
||||
|
||||
-(void) viewDidAppear:(BOOL)animated
|
||||
{
|
||||
[super viewDidAppear:animated];
|
||||
|
||||
[RBXFunctions dispatchOnMainThread:^
|
||||
{
|
||||
[_loadingSpinner setHidden:NO];
|
||||
[_loadingSpinner startAnimating];
|
||||
[_lblMessage setHidden:NO];
|
||||
}];
|
||||
|
||||
[self initializeDevice];
|
||||
}
|
||||
|
||||
//Task Functions
|
||||
-(void) initializeDevice
|
||||
{
|
||||
///USE THIS FUNCTION TO PERFORM ANY ACTIONS AND CONVEY MESSAGES TO THE USER
|
||||
_initializationStartTime = [NSDate date];
|
||||
|
||||
|
||||
//STEP 1) we need to call this on start up, to create/save a browser tracker
|
||||
[self updateMessage:NSLocalizedString(@"LoadingMessageInitDevice", nil)];
|
||||
NSDate* reportingTime = [NSDate date];
|
||||
[RobloxData initializeBrowserTrackerWithCompletion:^(bool success, NSString* browserTracker)
|
||||
{
|
||||
//keep track of how long it took to initalize the browser tracker, we cannot report it yet
|
||||
NSTimeInterval initializeTime = [[NSDate date] timeIntervalSinceDate:reportingTime];
|
||||
|
||||
//Configure the analytics
|
||||
[[RBXEventReporter sharedInstance] reportAppLaunch:RBXAContextAppLaunch]; //this is timestamped to measure the time from launch to "ready"
|
||||
|
||||
|
||||
// Update all client settings
|
||||
// NOTE - analytic reporting for flag loading is already handled within this function
|
||||
[self updateAllClientSettingsWithCompletion:^
|
||||
{
|
||||
//now that we have client flags, we can send reports out send out analytic reports
|
||||
[[SessionReporter sharedInstance] postStartupPayloadForEvent:@"deviceInitialize" completionTime:initializeTime];
|
||||
|
||||
//initialize some flag settings
|
||||
[self initCrashlytics];
|
||||
[self initAdColony];
|
||||
|
||||
//fetch the AB Tests (legacy synchronous operation)
|
||||
[self initABTests];
|
||||
|
||||
//last of all
|
||||
[self doTaskAutoLogin];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
-(void) updateAllClientSettingsWithCompletion:(void(^)(void))handler
|
||||
{
|
||||
[self updateMessage:NSLocalizedString(@"LoadingMessageInitFlags", nil)];
|
||||
|
||||
//Code Migrated from AppDelegateROMA - 2/25/2016
|
||||
[RBXFunctions dispatchOnMainThread:^
|
||||
{
|
||||
RobloxWebUtility * robloxWebUtility = [RobloxWebUtility sharedInstance];
|
||||
|
||||
//Make sure that the base URL has been set
|
||||
//NOTE- This must be initialized or else the WebUtility will crash
|
||||
[RobloxInfo getBaseUrl];
|
||||
|
||||
//update the settings
|
||||
[robloxWebUtility updateAllClientSettingsWithReporting:YES withCompletion:handler];
|
||||
}];
|
||||
}
|
||||
-(void) initCrashlytics
|
||||
{
|
||||
//Code Migrated from AppDelegateROMA - 2/25/2016
|
||||
[self updateMessage:NSLocalizedString(@"LoadingMessageInitCrashlytics", nil)];
|
||||
|
||||
[RBXFunctions dispatchOnMainThread:^
|
||||
{
|
||||
iOSSettingsService* iss = [[RobloxWebUtility sharedInstance] getCachediOSSettings];
|
||||
[[RobloxCachedFlags sharedInstance] setInt:@"CrashlyticsPercentage" withValue:iss->GetValueCrashlyticsPercentage()];
|
||||
[[RobloxCachedFlags sharedInstance] sync];
|
||||
}];
|
||||
|
||||
}
|
||||
-(void) initAdColony
|
||||
{
|
||||
//Code Migrated from AppDelegateROMA - 2/25/2016
|
||||
[self updateMessage:NSLocalizedString(@"LoadingMessageInitAdColony", nil)];
|
||||
|
||||
[RBXFunctions dispatchOnMainThread:^
|
||||
{
|
||||
NSString* adColonyAppId = [NSString stringWithUTF8String:DFString::AdColonyAppId.c_str()];
|
||||
NSString* adColonyZoneId = [NSString stringWithUTF8String:DFString::AdColonyZoneId.c_str()];
|
||||
|
||||
[AdColony configureWithAppID:adColonyAppId zoneIDs:@[adColonyZoneId] delegate:nil logging:YES];
|
||||
|
||||
}];
|
||||
}
|
||||
-(void) initABTests
|
||||
{
|
||||
// initalize the AB Test - this may take a bit - it is a synchronous request
|
||||
[self updateMessage:NSLocalizedString(@"LoadingMessageInitExperiments", nil)];
|
||||
|
||||
NSDate* fetchingExperimentsStart = [NSDate date];
|
||||
[[ABTestManager sharedInstance] fetchExperimentsForBrowserTracker];
|
||||
NSTimeInterval fetchExperimentsTime = [[NSDate date] timeIntervalSinceDate:fetchingExperimentsStart];
|
||||
|
||||
//report how long it took to initialize the AB Tests
|
||||
[[SessionReporter sharedInstance] postStartupPayloadForEvent:@"fetchABTestExperiments" completionTime:fetchExperimentsTime];
|
||||
}
|
||||
-(void) doTaskAutoLogin
|
||||
{
|
||||
//attempt to automatically log in
|
||||
NSString* message;
|
||||
if ([[LoginManager sharedInstance] hasLoginCredentials] || [[LoginManager sharedInstance] hasSocialLoginCredentials] || [LoginManager sessionLoginEnabled])
|
||||
message = NSLocalizedString(@"LoadingMessageAutoLogin", nil);
|
||||
|
||||
if (message)
|
||||
{
|
||||
[self updateMessage:message];
|
||||
|
||||
NSDate* autoLoginTaskStart = [NSDate date];
|
||||
[[LoginManager sharedInstance] processStartupAutoLogin:^(NSError *loginError)
|
||||
{
|
||||
if ([LoginManager sessionLoginEnabled])
|
||||
{
|
||||
//report how long a session login took
|
||||
[[SessionReporter sharedInstance] postStartupPayloadForEvent:@"fetchUserInfo" completionTime:[[NSDate date] timeIntervalSinceDate:autoLoginTaskStart]];
|
||||
}
|
||||
|
||||
|
||||
//check for a successful login
|
||||
if ([RBXFunctions isEmpty:loginError])
|
||||
{
|
||||
// Initialize Store Manager on login, so that any pending transaction from last session are queued
|
||||
GetStoreMgr;
|
||||
}
|
||||
|
||||
|
||||
//regarless if we are successfully logged in or not, go to the Welcome Screen
|
||||
//The Welcome Screen will decide what screen to display
|
||||
[self goToWelcomeScreen];
|
||||
}];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//the app has no stored credentials and session login is not enabled, escape and go to the Welcome Screen
|
||||
[self goToWelcomeScreen];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Helper Functions
|
||||
-(void) updateMessage:(NSString*)message
|
||||
{
|
||||
[RBXFunctions dispatchOnMainThread:^{ [_lblMessage setText:message]; }];
|
||||
}
|
||||
|
||||
//Navigation Functions
|
||||
-(void) goToWelcomeScreen
|
||||
{
|
||||
//report the total time for startup
|
||||
[[SessionReporter sharedInstance] postStartupPayloadForEvent:@"startupFinished" completionTime:[[NSDate date] timeIntervalSinceDate:_initializationStartTime]];
|
||||
|
||||
//We are done here, let's move on
|
||||
//if (_lblMessage.text == nil || _lblMessage.text.length == 0)
|
||||
// [_lblMessage setText:NSLocalizedString(@"LoadingMessageComplete", nil)];
|
||||
|
||||
[RBXFunctions dispatchOnMainThread:^{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
[self performSegueWithIdentifier:@"ShowWelcomeScreen" sender:self];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user