2012-03-12 74 views
2

我正在製作一個應用程序,我想要的功能就像當我在設備上運行我的應用程序,然後它將立即關閉而不顯示任何屏幕。但應用程序在後臺運行。當用戶點擊應用程序的圖標時,它不會顯示任何屏幕,但在後臺工作。 2分鐘後,它會顯示一條警告消息。那是怎麼回事?在設備上安裝時如何將應用程序發送到後臺?

我用代碼這個如下: -

-(void)applicationDidFinishLaunching:(UIApplication *)application{ 
[application cancelAllLocalNotifications]; 
[self applicationWillTerminate:application];}-(void)applicationWillTerminate:(UIApplication *)application{ 
/* 
Called when the application is about to terminate. 
Save data if appropriate. 
See also applicationDidEnterBackground:. 
*/ 

UILocalNotification* ln = [[UILocalNotification alloc] init]; 
ln.fireDate =[NSDate dateWithTimeIntervalSinceNow:30]; 
ln.alertBody = [NSString stringWithFormat:@"Now app is working in Background."];   
ln.soundName = UILocalNotificationDefaultSoundName; 
[[UIApplication sharedApplication] scheduleLocalNotification:ln]; 
ln.hasAction=NO; 
[ln release]; 
exit(0);} 

但是這是行不通的,因爲我想要的。那麼這段代碼中的錯誤是什麼?那是怎麼回事?

在此先感謝...

回答

1

你不能把你的應用程手動調用[self applicationWillTerminate:application];。這是一個委託方法,當您的應用程序即將終止時被調用,而不是終止應用程序的方法。

您可以嘗試在didFinishLaunchingWithOptions:中安排本地通知,然後致電exit(0);。可能會顯示某種splah屏幕(或黑屏)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    [application cancelAllLocalNotifications]; 
    UILocalNotification* ln = [[UILocalNotification alloc] init]; 
    ln.fireDate =[NSDate dateWithTimeIntervalSinceNow:30]; 
    ln.alertBody = [NSString stringWithFormat:@"Now app is working in Background."];   
    ln.soundName = UILocalNotificationDefaultSoundName; 
    [[UIApplication sharedApplication] scheduleLocalNotification:ln]; 
    ln.hasAction=NO; 
    [ln release]; 
    exit(0); //this line kills the app (and gets your app rejected) 
    return NO; //this line is just to make compiler happy 
} 

請注意,這肯定不會被批准用於App Store。

+1

我可以證實它,它會肯定會被蘋果拒絕。我想在通話結束時用虛假的通話應用做類似的事情。他們檢查所有退出(0)電話,如果他們發現他們立即拒絕該應用程序。 – 2012-03-12 19:16:15

相關問題