2011-11-22 121 views
37

從iOS 5開始,有兩種通知樣式:橫幅和提醒(「舊」樣式)。用戶可以在設置中爲每個應用程序設置使用哪種樣式。但是,現在默認情況下,通知顯示爲橫幅樣式。爲應用程序設置默認iOS本地通知樣式

我正在使用本地通知來提醒將發生「現在」事件。橫幅在它出現後不久就會消失(並且不太明顯,以至於可以點擊它),因此對於這些通知,希望將警報樣式通知留在屏幕上,直到用戶決定操作(忽略或去)到應用程序)。

有沒有辦法通過代碼或例如Info.plist條目告訴iOS應該默認使用警報樣式通知(只要用戶還沒有配置其他東西)?

更新缺席的信息/文件是不足以讓我解決這個問題。我想要一個類似論壇/博客帖子的東西,來自有權威的人(Apple員工或Erica Sadun的某個人)說這是不可能的,或者如果可能的話,我需要解決方案。像這樣的解決方法「要求用戶更改設置」也不夠好。

+0

您是否嘗試過使用此文檔的第53-54頁上的方法? http://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/iphoneappprogrammingguide.pdf – DanZimm

+0

@DanZimm:問題不在於安排本地通知。問題是告訴iOS使用alert樣式默認顯示它們。你引用的文檔沒有提供任何有關這方面的信息。 – DarkDust

+0

gotcha - 我想也許創建和配置uilocalnotification的方式可能會影響它的外觀,我的不好:P – DanZimm

回答

20

我想補充一點,因爲我已經打開一個TSI,不知何故我問了這個問題,並得到了答覆。從Quinn的「The Eskimo!」開始:

「這取決於你的意思。你可以根據你設置UILocalNotification屬性(如alertBody,soundName等等)來控制通知的顯示方式。但是,如果您問的是解釋這些屬性的方式(用戶可以在「設置」>「通知」中自定義的內容),則這些屬性是用戶首選項,不會通過任何API公開。「

+3

現在奎因就是我所說的一個可信的來源,非常感謝。 – DarkDust

+0

其真正的答案,爲進一步的幫助,這裏是我觀察到的 – JProgrammer

+1

警報風格取決於3個屬性,即alertBody,alertAction和alertTitle,如果你只提供alert body,那麼風格將是banner,如果這些都不是提供那麼它將是別無它將警惕 – JProgrammer

16

我有一個鬧鐘應用程序,我也需要這個功能。在iOS5下,如果用戶在關閉時使用其他應用程序,則會出現橫幅。因此,我花了很多時間瀏覽解決方案。

然而,這是無法控制的警報由UILocalNotification恐怕:(產生樣式

可以從類引用看到,有沒有它規定:

http://developer.apple.com/library/IOs/#documentation/iPhone/Reference/UILocalNotification_Class/Reference/Reference.html

還是在plist中:

http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

最好的事情,以d o告訴用戶如何改變設置。

+0

恐怕「UILocalNotification」中沒有任何屬性不足以解決這個問題。例如,可能會有一個'Info.plist'鍵來指定默認值。 – DarkDust

+0

不在其中(更新後)。 – tarmes

+3

沒有冒犯性,但我認爲你不具有權威性,即使你似乎爲此付出了一些努力。但我懷疑你看過iOS二進制文件,或者深入閱讀文檔。不過,我很欣賞這是我爲什麼給你+1的努力。 – DarkDust

4

顯然你不喜歡聽不到答案,但沒有。

+1

我對答案「沒有」沒有問題,但它必須是一個權威的「否」。所以,如果你可以支持這些,例如鏈接到一些文檔,或者發佈一些真正在這個問題上發表意見的人(例如蘋果員工或像iPhone Dev Team的人那樣的高調黑客),那麼你會得到賞金:-) – DarkDust

+0

嗯,我花了很長時間看,我還沒有找到解決方案。考慮到所涉及的時間,我會說我的迴應現在是權威性的,所以如果至少有兩個人會對它投票,這樣我就可以得到一半獎金,那麼會很好:)你會在其他回覆中找到它...... 。 – tarmes

+0

這實質上就是我每天看到的問題:我的應用程序的行爲與其他所有行爲完全不同?我怎樣才能徹底改變iOS UI?這種事情是不可能的。它不會縮放。 (也許你的鬧鐘應用程序確實需要不同,但每個屁應用程序也會這樣做。) –

11

你可能不會在這裏找到來自你的同行的'權威',你應該直接向蘋果詢問;而這個問題已經被問了幾次對他們的論壇,並沒有回答......

的HIG編程指南 - http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/TechnologyUsage/TechnologyUsage.html#//apple_ref/doc/uid/TP40006556-CH18-SW1 -

「iOS設備上支持本地應用程序或推送通知可以參加 通知中心以各種方式,取決於用戶的首選項「 」。

最後一句是我發現的唯一'權威提示'。

用戶的偏好< =你不能強制用戶(的偏好)。 期間。 這個設計的選擇顯然是蘋果之路(應用程序的遊樂場是有限的,以確保最佳的用戶體驗可能)

至於更多的權威......也許喊?

不,你不能選擇通知顯示的風格,這是用戶的選擇

只是在開玩笑...... 總之,解決方法可能是提供應用程序的方式 - 提示/教程 - 到推動用戶自己改變提醒風格...

祝你好運!

+0

我已經計劃在賞金期結束後提交雷達,當時我問了我希望我不需要的問題,但很快就很明顯,這將是唯一的方法是一勞永逸地回答這個問題;-) – DarkDust

+0

=> http://openradar.appspot.com/9570818 – Vinzzz

+1

+1爲OpenRadar鏈接,謝謝。 – DarkDust

-2

有你在didFinishLaunching方法試圖

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

,這將不利於這些更新,但應該啓用這些警報首先安裝

+0

你說的是* remote *通知(並且錯過了'UIRemoteNotificationTypeAlert'),但我正在談論*本地*通知。該文檔不會影響本地通知,所以我非常懷疑它會產生影響。 – DarkDust

+0

根據人們的評論,即使只使用本地通知,也應該使用此通話來啓用通知中心的應用程序。 – zambono

+0

這不會改變任何東西 - 即使在安裝時設置UIRemoteNotificationTypeAlert時,仍然會出現徽章樣式默認情況下 – user387184

0

您可以使用此行來查詢當前的設置通知的風格:

UIRemoteNotificationType* enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

您可以檢查enabledTypes,然後指導用戶更改通知樣式中的設置。

+1

不幸的是,這隻能確定是否啓用了警報,但無法找出警報的風格。見定義: 的typedef NS_OPTIONS(NSUInteger,UIRemoteNotificationType){ UIRemoteNotificationTypeNone = 0, UIRemoteNotificationTypeBadge = 1 << 0, UIRemoteNotificationTypeSound = 1 << 1, UIRemoteNotificationTypeAlert = 1 << 2, UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, } NS_ENUM_AVAILABLE_IOS(3_0); – fabe

相關問題