ios - SKStoreProductViewController showing up with delay -


i use in app skstoreproductviewcontroller. shows correctly, few seconds of delay, slows down user experience.

is there wrong in code ? or should inform user vc loading ? because right 1 can believe nothing happening after pressing button (which triggers following code) :

-(void)launchapp:(id)sender {      // recall on main thread if necessary     if (![nsthread ismainthread]) {         [self performselectoronmainthread:@selector(launchapp:)                                withobject:sender                             waituntildone:no];         return;     }      // initialize product view controller     skstoreproductviewcontroller *storeproductviewcontroller = [[skstoreproductviewcontroller alloc] init];      // configure view controller     [storeproductviewcontroller setdelegate:self];     [storeproductviewcontroller loadproductwithparameters:@{skstoreproductparameteritunesitemidentifier : @"*********"}                                           completionblock:^(bool result, nserror *error) {         if (error) {             nslog(@"error %@ user info %@.", error, [error userinfo]);         } else {             // present store product view controller             [self presentviewcontroller:storeproductviewcontroller animated:yes completion:nil];         }     }]; } 

the delay caused because present viewcontroller after products have been loaded sucesfully.

you can put call presentviewcontroller:animated:completion: outside of block called after products have been loaded. in case controller presented empty, , filled after products have been loaded.

something along lines:

skstoreproductviewcontroller *storeproductviewcontroller = [[skstoreproductviewcontroller alloc] init];  // configure view controller [storeproductviewcontroller setdelegate:self]; [storeproductviewcontroller loadproductwithparameters:@{skstoreproductparameteritunesitemidentifier : @364709193}                                       completionblock:^(bool result, nserror *error) {     if (error) {         nslog(@"error %@ user info %@.", error, [error userinfo]);     } else {      } }]; // present store product view controller [self presentviewcontroller:storeproductviewcontroller animated:yes completion:nil]; 

or create "popup" view shows activity indicator while controller loads content.

or use [uiapplication sharedapplication].networkactivityindicatorvisible = yes;

there couple of ways handle this.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -