2011-10-15 33 views
6

我的應用程序需要在iOS 5通知中心中設置爲「警報」和「聲音」。從我發現它是不可能爲您的應用程序提供正確的設置,這將是最好的選擇,所以糾正我,如果我錯了。檢測通知中心設置

所以,我正在尋找一個過程來檢測當前的設置,並警告用戶,如果這些不正確。

回答

0

這不能以編程方式完成。 「registerForRemoteNotificationTypes」用於遠程(推送)通知,不是本地的。

我已經能夠做的唯一事情就是在應用商店的應用描述中包含關於如何設置通知中心的說明。我也把它放在我的演示視頻中。

您也可以考慮在第一次啓動應用程序時提示您解釋應用程序的「正確」通知設置。不要在隨後的發佈中顯示,但在「幫助」部分中提供。

當然,「什麼是正確的」是用戶想要的,但對於我的應用程序,用戶從來不需要默認設置,即「橫幅」。我的應用程序的最佳用戶體驗只是「聲音」。 Notification Center之前關於我的應用程序的最大抱怨是來自本地通知的彈出窗口。現在,使用通知中心,用戶可以關閉除「聲音」之外的所有內容。這是他們都似乎想要的設置。爲什麼我不能作爲開發人員將它作爲默認設置給他們?如果他們想把它改成別的東西,那太棒了,但我應該控制默認設置。但我在咆哮。

+0

我從來沒有找到如何做到這一點,如果有辦法。 (有時你會發現沒有記錄的解決方法)並且同意應該有辦法做到這一點,它可能需要向用戶強制彈出。 「應用程序想修改其通知設置,同意?」。雖然我認爲咆哮超出了計算器的範圍...... –

0

我不認爲這可以通過編程來完成。

您可以規定您的應用在啓動時可以接受的提醒。

我會在應用程序委託使用,didFinishLaunchingWithOptions方法

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 
0

認爲它是這樣的:你會怎樣,作爲一個用戶,想如果所有其他應用程序設置這些嗎? (當然,你希望它爲你的應用程序開發,但並非所有的應用程序都像你的應用程序一樣好。)或者,如果其他應用程序每次啓動都會警告你?

不可能,這就是爲什麼。

就像尼克說的,只是把你希望用戶啓用的一切。系統然後將給用戶一個機會來允許這個。

+0

感謝大衛,就像上面提到的,我到目前爲止已經發現它不可能。我感興趣的是在我的應用程序中檢測通知中心的設置,以便我可以向用戶顯示警告,如果不正確。因此,用戶可以進入notif中心並更正錯誤。如果設置正確,警告將會消失。 –

+1

通知的「正確」是用戶需要的,而不是您希望他們擁有的內容。如果您試圖強制用戶爲您的應用程序提供特定類型的通知,我相信您會立即被Apple拒絕。 – BigSprocket

1

實際上它可以用下面的方法來完成 -

UIRemoteNotificationType類型= [UIApplicationsharedApplication]。enabledRemoteNotificationTypes;

而類型是

typedef enum 
{  
    UIRemoteNotificationTypeNone = 0, 
    UIRemoteNotificationTypeBadge = 1 << 0, 
    UIRemoteNotificationTypeSound = 1 << 1, 
    UIRemoteNotificationTypeAlert = 1 << 2, 
    UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3 
} 
根據

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html 所以,如果你想知道,如果用戶批准了您的通知應用程序,所有你需要做的是檢查是否types >= 4 是意識到:這不會告訴您用戶是否已啓用或禁用了您的應用的通知中心,但它只會告知您用戶批准的通知的類型

+0

我無法得到這個工作。您是否使用最新的iOS和當前硬件進行過測試? –

+0

是的,它的工作..你得到什麼類型的類型? –

+0

它看起來像' - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types''必須被調用才能使'enabledRemoteNotificationTypes'響應除'0'以外的任何內容。這僅用於推送,不能用於本地通知。 – Jonny