2012-07-20 117 views
-1

我們公司有多個應用程序,當然都有不同的應用程序ID。最近我們發現,推送通知是從應用X發送到設備的,而實際上它是發送給應用的。YAPNS推送通知收到不正確

用戶打開應用Y,我們的後端註冊其設備令牌。用戶使用該應用程序並存在 現在,相同用戶打開應用程序X,後端也會註冊該設備。

現在推送消息發送到應用程序Y,用戶收到此消息,但設備顯示它好像它已被應用程序X接收。當點擊通知應用程序X時打開。

注:所有應用程序使用不同的數據庫

我們已經檢查了我們使用(我們的後端將通知發送到APNS是用PHP編寫)的.PEM文件,並將這些就好了。連接管理器也使用正確的證書正確發送給APNS。

這個問題會有什麼問題,當然這個解決方案呢?

+0

當你說PEM文件「很好」時,這是否意味着每個應用程序都有單獨的PEM文件?含義1每個應用程序的生產證書PEM文件? – Stavash 2012-07-20 13:24:23

+0

是的,每個應用程序都有自己獨特的PEM文件。所有這些都是由他們各自獨特的p12文件製作而成,這些文件是從製作應用程序的第三方獲得的(我們只做了後端)。 – Thul 2012-07-20 14:06:35

回答

3

您是否記得在與APNS通信的.php腳本的末尾關閉與APNS服務器的連接?

只是把此行結尾:

fclose($fp); 

其中$ fp的是較早宣佈像這樣的連接:

$fp = stream_socket_client(
    'ssl://gateway.push.apple.com:2195', $err, 
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

你得到這個問題的原因可能是因爲連接從其他應用程序尚未關閉。當它們處於打開狀態時,會從最後一個打開與服務器的連接的應用程序發送新通知。我的公司也遇到了同樣的問題,當我們在所有APNS腳本的結尾關閉連接時,問題就消失了。

請讓我知道這是否適合你。