會使用手機的人都一定會接觸到推播通知！身為iOS App開發者三年的我，也只大概瞭解其如何實作，現在我要來揭開它詳細的運作原理與架構。這裡也不想花大篇幅描述太多細節，不是很聰明的我就用圖解蘋果推播通知服務 (Apple Push Notification Service)的方式來理解它！
官方開發者文件已經說得非常清楚，然而會主動去翻來看的人並不多，大概是因為全部都是英文描述，加上十分詳細的說明，讓想要快速上手的人另尋其它網頁。上週幫朋友小A測試iOS後台推播，更進一步知道如何申請推播憑證，在此之前要先申請開發憑證！才知道iOS的推播還真的很「耐人尋味」。想起八月份的百貨公司案子，所使用的後台推播服務是被臉書收購的Parse，它讓我不必自製一個後台就能輕易地把訊息推播到裝置上！
APNS主要有三個角色：
發送推播訊息的過程是從Provider到APNS，再從APNS到Device。
實作上需要取得Push Token (Device Toke)來作為辨識的依據，而Push Token是要由Device向APNS索取，接著把索取到的Push Token送到Provider。
若有實作過iOS推播功能的人，就知道要下指令讓使用者同意接收到推播通知，接著就能從APNS取得Push Token，APNS回應後將讓Device收到Push Token，接著下指令讓Push Token傳到我們的後台Provider。
從開發者後台申請到的推播憑證有分兩種：
此圖是Device與APNS相互驗證的過程，開發者不需要實作，但要知道其跟憑證 (Certificate)有關係！
這圖是Provider與APNS相互驗證的過程（類似Device與APNS），開發者也不需要實作，但要知道其跟憑證 (Certificate)有關係！
可以收到推播訊息，雖然不是我推的ＸＤ～我自己是還沒寫程式跑iOS9.1，既然其他人開發的App，能推到我iOS9.1裝置，自己寫的App推播理應可以！
據我所知的推播的設計，還是要透過Provider來進行，你說的案例是由User觸發，此時會多一個步驟，就是User點擊按鈕後，App呼叫Provider的API，Provider收到後知道User有推播的請求，於是Provider就把從API取得的資訊變成推播內容送出給特定的Device。那麼分權限就看User所觸發的API是帶怎樣的參數給Provider。
所以還是要提供token給Provider喔！
可以先試試看一般呈現你那view controller的樣子，說不定是VC沒有畫面。
確定VC有畫面後，再用推播來觸發條件，這樣較能正確呈現你要的樣子。