title: Can my server receive the acknowledgement from the GCM once the intended message is delivered to the android app?
body: <p>I have started integrating GCM to my android application. With the help of <a href="http://developer.android.com/google/gcm/index.html" rel="nofollow noreferrer">startup tutorial</a> I have setup the sample demo and it works fantastic. I also understood the different <a href="http://developer.android.com/google/gcm/gcm.html#response" rel="nofollow noreferrer">response statuses</a> received when my server sends the message to GCM, which I believe signifies the status of the communication between my server and GCM server. </p>
  
  <p>My question is, is there a a way to get the status of the communication between GCM server and android application? Basically an acknowledgement signifying whether intended message has been successfully delivered or not. I also read that, the <a href="http://developer.android.com/google/gcm/adv.html" rel="nofollow noreferrer">default timeout</a> is 4 weeks, unless the time_to_live flag is set, which enables my understanding that GCM maintains the queue and would definitely ensure the message delivery.</p>
  
  <p>However, to ensure the reliability, as third party server, should I ever need to retry sending the same message (if it's not already taken care by the GCM infrastructure)? if I need to take care of the retry, how to determine the failure?</p>
  
  <p>One way I have is, to define a push id and send it along with the message, once it is received the android app will report the server with the respective push id. If the response not received within a specified time, then, the server will retry sending the message. This approach is defined in the 2nd answer of the <a href="https://stackoverflow.com/questions/13967883/android-gcm-delivery-monitoring">post</a> and will help monitoring the time taken by the GCM (specially for the QA team).</p>