39

我正在構建一個嚴重依賴APN的應用程序。在我的應用第一次啓動後,iOS詢問是否允許此應用使用APN(由於撥打registerForRemoteNotificationTypes:)。然而一旦被解僱,這個對話永遠不會回彈。我必須手動去Settings->Notifications->MyApp啓用/禁用那裏的東西。那麼是否有一種方法可以避免這種喧擾,並且實際體驗到每次在調試模式下啓動我的應用時,用戶在第一次啓動時都會遇到什麼?如何取消「允許推送通知」對話框後被解除一次?

+0

檢查此鏈接http://stackoverflow.com/questions/10191006/objective-c-detect-when-user-change-the-apps-notifications-settings – Pawan

+0

你應該將此標記爲已回答,因爲下面的方法會工作(對於iOS 7.0+)。 – LucasA

+0

@LucasA由誰? – Schultz9999

回答

76

這裏是你如何Apple say做到這一點:

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

第一時間推送通知啓用推送應用註冊, 的iOS詢問用戶是否希望收到該應用的通知。 一旦用戶迴應此警告,除非該設備恢復或應用程序已經在 每天至少被卸載了它不會被再次提出 。

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

  1. ,從設備刪除您的應用程序。

  2. 完全關閉設備並重新打開設備。

  3. 轉到設置>常規>日期&時間和設置日期提前一天或更多。

  4. 再次完全關閉設備並重新打開設備。

+5

哇...好的工作蘋果:)但謝謝你!總比沒有好。我會給它一個鏡頭。 – Schultz9999

+1

副作用:如果您在啓用了iMessages的iDevice上執行此操作,將有一天移動到未來將禁用iMessage。因此,完成上述步驟並重置時鐘後,請記住重新啓用iMessages,否則您將無法發送或接收 –

+4

我剛剛發現的某些內容:重置權限後,只要提示再次顯示,您就可以轉向關閉/打開電話而不是回答提示,這會在下一次應用程序運行時再次提示。用於更改代碼試圖找出是否/何時某些代碼路徑會導致提示。 –

5

當前他們是否編程方式來提示用戶重新接受推遲通知後,他們已經決定說不。

您應該簡單地檢查您是否被授予訪問權限,如果不顯示提示用戶手動授予隱私設置權限的視圖,以啓用應用程序的推送通知功能。

+0

我甚至不想找到一種方法來問同樣的事情。我所需要的基本上是使系統進入初始狀態。但我明白你的觀點。這是我以後通過調用'[[UIApplication sharedApplication] enabledRemoteNotificationTypes]'所做的。問題是我想在應用程序啓動時採取不同的行爲。我可以嘗試使用我想的相同方法。 – Schultz9999

+0

我明白你想要做什麼,但不幸的是這是不可能的(除非有一些未公開的私有API來這樣做)。 – Woodstock

20

因爲時間就是金錢和其他方法採取永遠,只是改變你的包ID一遍又一遍調試時,每次通知將得到查詢清新。一旦您滿意代碼返回到原始包ID。

+1

我認爲這絕對是最好的,最快速和最安全的方式,讓應用程序回到它的初始狀態。 – ooxio

+1

但是您是否需要一直更改配置文件? –

+0

@VanDuTran我不必,推動仍然爲我工作。但即使你不得不這樣做,它也會比當前標記的解決方案快得多。哈哈! –

14

在iOS 9.x中,每次刪除應用程序並重新安裝時,都可以獲得提示。對於AppStore生產下載和adhoc模式都是如此。設備令牌每次都是唯一的。

@chengsam在iOS 10中驗證了這一點。

+0

在我的測試中,我沒有看到在iOS 9.2(13C75)上通過HockeyApp分發到iPad Mini(型號A1489 a.k.a. ME276LL/A)的應用程序的臨時版本的重新提示。其他人可以稱重嗎? – AWrightIV

+0

我沒有看到重新提示:( – mofojed

+1

謝謝!它在我的iOS 10上運行良好。我剛從xCode運行應用程序到iPhone並在下次運行之前卸載應用程序。最簡單的答案在這裏。 –

1

我的問題是沒有註冊UserNotificationSettings。這允許APN工作,但不允許背景聲音或徽章。

 [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 
1

如果您只是測試Push Notifications提示正確顯示,請使用模擬器。您只需卸載該應用程序並重新安裝,並在您嘗試註冊推送通知時再次出現提示。

6

在IOS10我現在可以通過刪除應用程序再次獲得提示。

+1

這是iOS 8的當天回來 –

相關問題