2012-04-05 98 views
2

像這樣的通知我的應用程序寄存器:如何以編程方式激活ios通知設置?

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert]; 

,但如果我手動去通知設置,禁用一切(通知中心,警報,聲音,徽章),然後卸載並重新安裝應用程序(或只是重新安裝沒有先卸載),我的iPhone保持舊的設置。我如何強制在重新安裝時重新激活這些設置?

回答

15

你不能。在iOS 5.0中,沒有記錄的功能可以通過url方案從應用程序中打開通知設置頁面(或任何設置頁面)。然後你可以要求用戶啓用通知。但它在5.1中被刪除,無論如何可能不會被Apple接受。

registerForRemoteNotificationTypes詢問用戶他是否想要接受來自您的應用程序的通知只有第一次您撥打。如果稍後用戶更改通知設置,則它不會再提問。您可以使用enabledRemoteNotificationTypes來檢查是否爲您的應用程序啓用了通知,並在需要時自己警告用戶,但用戶必須手動轉到設置並重新啓用它們。你不能再從你的應用程序中完成。

UPDATE於iOS 8.0

從iOS的蘋果8.0返回打開應用的系統設置頁面的可能性:

NSURL* settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
[[UIApplication sharedApplication] openURL:settingsURL]; 
+0

那麼什麼是registerForRemoteNotificationTypes:打算做什麼? – Alexis 2012-04-05 10:34:48

+0

我將此信息添加到答案中。 – MrTJ 2012-04-05 10:52:05

+0

,然後如果我卸載並重新安裝該應用程序,該設置將保留嗎?有沒有辦法重置它? (重置重置菜單中的所有設置除外) – Alexis 2012-04-05 11:02:42

1

你需要重新設置推送通知permissions.Apple提供重置權限的方法 -

重置iOS上的推送通知權限警報

第一次推送應用程序,註冊推送通知。 iOS詢問用戶是否希望接收該特定應用程序的遠程通知。一旦用戶對此警報作出響應,它將不會一再呈現,除非設備已恢復或應用程序已卸載至少一天。

如果要模擬應用程序的首次運行,可以將該應用程序卸載一天。您可以實現後者沒有按照以下步驟實際上等待了一天:

1.Delete your app from the device. 
2.Turn the device off completely and turn it back on. 
3.Go to Settings > General > Date & Time and set the date ahead a day or more. 
4.Turn the device off completely again and turn it back on. 

有關詳細信息,請參閱:https://developer.apple.com/library/ios/technotes/tn2265/_index.html

0

嘗試當前日期之後更改設備日期爲1或2天。有時它存儲在設備的鑰匙鏈中並存儲1或2天。它適用於我日曆和位置權限的情況。

相關問題