2012-11-29 81 views
0

後不顯示文本我用這個代碼來創建本地通知:UILocalNotification按下home鍵

 UILocalNotification *notification=[[UILocalNotification alloc]init]; 
     notification.soundName = @"new_friend_request.mp3"; 
     notification.repeatInterval = 0; 
     notification.alertAction = @"Go to"; 
     notification.userInfo = [NSDictionary dictionaryWithObject:@"actionNotification" forKey:@"actionNotification"]; 
     notification.alertBody = @"Body"; 
     [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
     [notification release]; 

但按下home鍵後,我沒有看到的主屏幕上的通知提醒正文蘋果手機。

剛開始的時候我想,通知沒有被調用,但後來我用調試,發現通知被正確調用。

所以,我不知道,爲什麼它不工作。

+0

你說(在答案的評論中)你的應用程序正在後臺運行。您應該將此添加到您的問題中,因爲它是關鍵。你可以展示你的applicationDidEnterBackground是怎麼樣的? – Hjalmar

回答

0

的問題是,當地notificatons被關閉了我的iphone設置應用。現在我仍然使用presentLocalNotification並且一切正常。

我的應用程序總是住在後臺,因爲我的應用程序使用套接字。

但無論如何,很抱歉浪費了那些試圖幫助我的人的時間,因爲問題歸咎於我。

1

這是正常行爲,因爲您在應用程序運行時直接觸發通知,通知獲取發送給旅遊應用程序委託。

由於您的應用程序已在運行,通知中心將不處理通知。

+0

1)我沒有在應用程序委託的didReceiveLocalNotification中獲得此通知; 2)我的應用程序在後臺運行,所以我試圖鎖定屏幕,解鎖,但沒有解決問題 –

1

您正在使用presentLocalNotificationNow方法。這將在當前您的應用程序正在運行的當前時間發佈通知。 如果應用程序正在運行,本地通知將不會收到警報或聲音,因爲它直接由您的應用程序接收。

如果你按Home鍵,那麼你不會得到任何警報或聲音。

presentLocalNotificationNow:

立即呈現一個本地通知。

- (void)presentLocalNotificationNow:(UILocalNotification *)notification

參數

notification

A local notification that the operating system presents for the application immediately, regardless of the value of the notification’s fireDate property. 

應用程序在後臺運行狀態可以 當有來電聊天, 消息或更新立即目前本地通知。由於操作系統複製了 通知,因此您可以在計劃完畢後將其釋放。

參考UIApplication class reference更多

+0

1)我沒有在應用程序委託的didReceiveLocalNotification中獲得此通知; 2)我不想得到警報,我想要在主屏幕頂部顯示帶有文本的視圖320 * 40。 –

+0

@PaulGalavic:你不明白這一點。因爲這與ios 5中的警報和引入類似。提供通知的新方法。如果你想在主屏幕上顯示通知,使用' - (void)scheduleLocalNotification:(UILocalNotification *)notification'方法。當您不使用應用程序時,這將顯示警報或橫幅。你不能使用'presentLocalNotificationNow:'方法來顯示它 –

3

在我的腦海裏,問題是你如何調用presentLocalNotification而應用程序是在後臺。我發現如果我使用NSTimerdispatch_after來調用調用presentLocalNotification的方法,那麼當應用程序位於後臺時實際不會觸發,而是延遲到應用程序返回到前臺之後。我想知道您認爲正在執行的代碼是否正在運行。

例如,在我的測試中,當我將NSTimer的代碼調用替換爲scheduleLocalNotification的下列用法時,如果應用恰好在後臺運行,我會收到通知。因此,更換您的線,上面寫着presentLocalNotification有:

// put all of your code configuring the UILocalNotification here 
// but omit the presentLocalNotification, replacing it with the following code 

// just for a test, fire the notification in 5 seconds 

notification.fireDate = [[NSDate date] dateByAddingTimeInterval:5.0]; 
[[UIApplication sharedApplication] scheduleLocalNotification:notification];