2013-04-16 20 views
1

我正在使用Google Cloud Messaging通知使用推送通知的Android應用程序的項目。我已經在PHP中實現了應用程序服務器。當我運行Android應用程序時,設備從GCM服務器獲取註冊ID,並將註冊ID發送到PHP服務器(應用程序服務器)。但我從服務器得到以下httpresponse:Gcm沒有被Recuried

{ 
    "multicast_id": 7015234441922271670, 
    "success": 1, 
    "failure": 0, 
    "canonical_ids": 0, 
    "results": [{ 
     "message_id": "0:1344007383866721%2adac3a0ad8b3148" 
    }] 
} 

但郵件沒有傳遞到設備。任何建議請。

如果任何人有上述問題,請檢查下面它可以幫助你

最後我已經找到解決方案在服務器端,只要應用程序表現很好,一切都應該正常工作。但是,如果應用程序中的某個錯誤會觸發同一設備的多個註冊,則可能很難調和狀態,並且最終可能會出現重複的消息。

GCM提供了一種稱爲「規範註冊ID」的功能,可以輕鬆從這些情況中恢復。規範註冊ID被定義爲您的應用程序請求的最後一次註冊的ID。這是服務器在向設備發送消息時應使用的ID。

如果稍後嘗試使用不同的註冊ID發送消息,GCM將像往常一樣處理請求,但它將在響應的registration_id字段中包含規範註冊ID。請確保使用此規範ID替換存儲在您的服務器中的註冊ID,因爲您最終使用的ID將停止工作。

+0

看到我的答案這可能是有用的http://stackoverflow.com/questions/14017176/i-cant-open-a-dialog-from-gcm-onmessage-in-android/14017645#14017645 –

+0

從[gcm指南](http://developer.android.com/google/gcm/gcm.html)注意:「如果您的組織具有防火牆來限制流量進出Internet,則需要將其配置爲允許與GCM連接要求你的Android設備接收消息,要打開的端口是:5228,5229和5230.GCM通常只使用5228,但它有時使用5229和5230.GCM不提供特定的IP,所以你應該允許你的防火牆接受來自Google的ASN 15169中列出的IP塊中包含的所有IP地址的傳入連接。「檢查你的防火牆。 – AlexBcn

+0

在它工作之前,但現在它不工作我怎麼能在上面做? – Prabu

回答

3

如果任何人有上述問題,請檢查下面它可以幫助你

最後我已經找到解決方案在服務器只要應用程序運行良好,一切都應該正常工作。但是,如果應用程序中的某個錯誤會觸發同一設備的多個註冊,則可能很難調和狀態,並且最終可能會出現重複的消息。

GCM提供了一種稱爲「規範註冊ID」的功能,可以輕鬆從這些情況中恢復。規範註冊ID被定義爲您的應用程序請求的最後一次註冊的ID。這是服務器在向設備發送消息時應使用的ID。

如果稍後嘗試使用不同的註冊ID發送消息,GCM將像往常一樣處理請求,但它將在響應的registration_id字段中包含規範註冊ID。請確保使用此規範ID替換存儲在您的服務器中的註冊ID,因爲您最終使用的ID將停止工作。

0

這或許可以幫助你PushNotification 檢查你的Androidmanifest.xml您的GCM通知你的包名

<uses-permission android:name="yourpackege.permission.C2D_MESSAGE" /> 

    <receiver 
      android:name="com.google.android.gcm.GCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 

       <!-- Receives the actual messages. --> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <!-- Receives the registration id. --> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="yourpackege" /> 
      </intent-filter> 
     </receiver> 
+0

我已經在androidManifest.xml中檢查過。我已經正確地放了包名,但我不知道發生了什麼 – Prabu