2012-11-07 21 views
0

我正在處理遊戲的通知方面,並且iOS處理本地通知的方式有問題。即使應用程序處於前臺,爲什麼本地通知會顯示?

在委託application:didReceiveLocalNotification的文檔,它規定了以下內容:

If the application is running in the foreground, there is no alert, badging, or sound; instead, the application:didReceiveLocalNotification: method is called if the delegate implements it.

然而,當一個地方的通知應該彈出和我的應用程序在前臺運行,它會先觸發該委託(它是空的),然後顯示警報。

我想知道的一種方式來專門處理本地通知時,應用程序在前臺運行。這甚至有可能嗎?

爲什麼我需要這個簡短的例子:當玩家開始建築物時,會在建築物完工時(最長6小時)創建本地通知以提醒他。然而,如果用戶在遊戲中時,此通知應該彈出,我想不顯示它,因爲他已經可以看到大樓已經完成。

謝謝

+0

你確定你沒有在'application:didReceiveLocalNotification'中顯示一個alertview嗎? –

+0

目前代理是完全空的,但我會嘗試刪除委託中的通知,也許它不會再顯示。 – Sanctus2099

回答

1

如果你打電話cancelAllLocalNotifications:解聘當前顯示的警報,即使該通知已被解僱。

+0

是的,但我會取消可能需要進一步的其他通知。但是我可以取消那個。我會檢查它並告訴你它是否有效。 – Sanctus2099

3
application:didReceiveLocalNotification: 

您需要處理是否要將通知顯示爲警報或徽章或聲音。因此,當您的應用程序處於後臺時,彈出式警報/徽章/聲音會通知用戶有關該消息(您的情況是該大樓已完成)。但是你可以選擇在委託方法中忽略這個。

編輯: 一旦方法被觸發,你的應用程序是活動的,則可以放棄通知

[[UIApplication sharedApplication] cancelLocalNotification:myNotification]; 

你的假設,它會彈出時在前臺是錯誤的。

+0

這不是一個假設。通過委託後,它實際上會在前臺彈出。我甚至試圖取消該委託中的通知,並在退出後仍然顯示。 – Sanctus2099

+0

立即檢查我的編輯。 –

+0

這正是我所嘗試的,並且通知仍顯示出來。 – Sanctus2099

相關問題