ios - Splash Screen Issue iPhone -


i using launch screen in xcode splash screen app.

there image on splash screen, no api hit in background.
taking long on splash screen time exceed of 20 sec , app crashed there, have checked on device log well.

sometime crashes , runs takes long.
not able move next screen there. , shows white screen before splash screen iphone 6 plus (no white screen on other devices).

how come out white screen issue iphone 6 plus , resolve splash screen time long issue ?

func application(application: uiapplication, didfinishlaunchingwithoptions launchoptions: [nsobject: anyobject]?) -> bool     {          // override point customization after application launch.         // self.prepareforcontact()         if let a: anyobject = (nsuserdefaults.standarduserdefaults().objectforkey("isfirsttime"))         {             if let a: anyobject = (nsuserdefaults.standarduserdefaults().objectforkey("userid"))             {                 self.createappfromhomepage()             }         }         else         {             self.createappfromwelcomescreen()         }          isallimagedownloading = false         // save data hit friend service on login on every launch...         nsuserdefaults.standarduserdefaults().setobject("1", forkey: "hitfriendservice")          let credentialsprovider = awscognitocredentialsprovider(regiontype: cognitoregiontype, identitypoolid: cognitoidentitypoolid)         let configuration = awsserviceconfiguration(region: defaultserviceregiontype, credentialsprovider: credentialsprovider)         awsservicemanager.defaultservicemanager().defaultserviceconfiguration = configuration          //print(credentialsprovider.secretkey)          if let event_id: anyobject = nsuserdefaults.standarduserdefaults().objectforkey("eventid")         {             self.geteventdescription()             self.uploadeventremainingimages()         }           let session1 = avaudiosession.sharedinstance()         session1.setcategory(avaudiosessioncategoryplayandrecord, withoptions: avaudiosessioncategoryoptions.mixwithothers|avaudiosessioncategoryoptions.defaulttospeaker|avaudiosessioncategoryoptions.allowbluetooth, error: nil)         session1.setactive(true, error: nil)         uiapplication.sharedapplication().beginreceivingremotecontrolevents()           let nsdocumentdirectory = nssearchpathdirectory.documentdirectory         let nsuserdomainmask    = nssearchpathdomainmask.userdomainmask         if let paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, true)         {         if let dirpath = paths[0] as? string         {             self.excludefrombackuptoicloud(dirpath)         }         }          if application.respondstoselector("registerusernotificationsettings:") {              let types:uiusernotificationtype = (.alert | .badge | .sound)             let settings:uiusernotificationsettings = uiusernotificationsettings(fortypes: types, categories: nil)              application.registerusernotificationsettings(settings)             application.registerforremotenotifications()         }         else         {             // register push notifications before ios 8            // application.registerforremotenotificationtypes(.alert | .badge | .sound)         }           if let isfirsttime: anyobject = nsuserdefaults.standarduserdefaults().objectforkey("isfirsttime")          {          }         else          {             uiapplication.sharedapplication().applicationiconbadgenumber = 0           //  nsuserdefaults.standarduserdefaults().setobject("1", forkey: "isfirsttime")          }         return true     } 

you being killed watchdog. app not crash per say.

investigate

profile app under instruments: see right away taking long.

fix

allow didfinishlaunchingwithoptions return immediately. factor out hard work in separate method, can invoke so:

swift

func application(application: uiapplication, didfinishlaunchingwithoptions launchoptions: [nsobject: anyobject]?) -> bool {     self.performselectoronmainthread("didfinishlaunching", withobject: nil, waituntildone: false)     return true } 

and hard work after returning (next event loop)

func didfinishlaunching() {     // time consuming work goes here } 

objective-c

[self performselectoronmainthread:@selector(didfinishlaunching)                        withobject:nil                     waituntildone:no];  - (void) didfinishlaunching {     // time consuming work goes here } 

Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -