For the GCM part, it seems there is no defined policy when it comes to sending to Unregistered Device
s. I did find this answer to a post that discusses the limitations of GCM. Some significant quotes from the answer:
The only limits you run into the GCM documentation is this: http://developer.android.com/google/gcm/adv.html#lifetime
Quote from the above link:
Note: There is a limit on how many messages can be stored without collapsing. That limit is currently 100. If the limit is reached, all stored messages are discarded. Then when the device is back online, it receives a special message indicating that the limit was reached. The application can then handle the situation properly, typically by requesting a full sync.
I also found this post where the GCM blocks a server, and as per the answer:
There is usage limit for GCM and if you automate the GCM request they consider as a threat as DOS attack