1

說實話,我並不是後端開發者,所以我沒有怎麼做到這一點。如何使用Zend Framework來收聽APN反饋服務器?

我想使用Zend Framework 2.x.x向iOS和Android發送推送通知。我瞭解大部分內容here,所以我相信現在可以輕鬆地將推送通知發送到設備。

我現在卡住的東西正在實現監聽器。引用文字:

APNS有反饋服務,您必須聆聽。蘋果公司指出,他們監控提供商,以確保他們正在收聽這個 服務。

反饋服務只返回一個設備令牌數組和 時間。您可以使用該時間來確保設備自上次發送以來沒有爲推送通知重新註冊 。

附下面這段代碼:

$apns = new Zend_Mobile_Push_Apns(); 
$apns->setCertificate('/path/to/provisioning-certificate.pem'); 

try { 
    $apns->connect(Zend_Mobile_Push_Apns::SERVER_FEEDBACK_SANDBOX_URI); 
} catch (Zend_Mobile_Push_Exception_ServerUnavailable $e) { 
    // you can either attempt to reconnect here or try again later 
    exit(1); 
} catch (Zend_Mobile_Push_Exception $e) { 
    echo 'APNS Connection Error:' . $e->getMessage(); 
    exit(1); 
} 

$tokens = $apns->feedback(); 
while(list($token, $time) = each($tokens)) { 
    echo $time . "\t" . $token . PHP_EOL; 
} 
$apns->close(); 

我真正瞭解它是如何工作的,什麼我應該與反饋做服務器的回報。我不知道這個腳本如何正在「監聽」Apple推送通知反饋服務器?我不認爲我可以在一個文件中使用這個代碼,奇蹟般地期待Apple的服務器找到它。我如何不斷地「傾聽」反饋服務器,以便在Apple需要時調用此腳本?

+0

Web服務器執行監聽位,所以看起來想法是使用此代碼答覆來自Apple服務器的請求。我不是iOS開發人員,但我想你會在Apple開發人員帳戶中設置偵聽器URL。 – halfer

+0

可能有用:[this search](https://duckduckgo.com/?q=listen+to+apple+apn+request+url)指向[this resource](http://stackoverflow.com/questions/16480320)/xcode中-i設備-APP-如何到聽換消息請求從服務器)。 – halfer

回答

1

Apple未調用您的腳本。您的腳本定期調用Apple的反饋服務(例如,每天一次 - 您決定運行腳本的頻率)。然後處理由反饋服務返回的設備令牌,並從數據庫中刪除過時的設備令牌。

每天查詢反饋服務以獲取設備令牌列表。使用 時間戳驗證設備標記是否從 重新註冊,因爲反饋條目已生成。對於尚未重新註冊的每個設備 ,請停止發送通知。 APNs 監視提供商勤勉地檢查反饋 服務並且避免將推送通知發送到不存在的設備上的不存在的 應用程序。

您可以閱讀更多關於反饋服務here

+0

哈哈,我聽懂的是,蘋果最終會打電話給我的劇本。如果相反,我應該爲此設置一個cron作業並每24小時執行一次? –

+0

@AndyIbanez是的,設置一個cron作業來定期執行腳本就可以實現。 – Eran