Our approach is to make sure future decryption of the data is impossible.
To do this the wrapped keys and the locally stored nonce+counter are deleted and the cloud provider is commanded to delete the encrypted blobs.
The platform uses a graph to figure out what references that data (forwarded messages, "stashed" copies, etc.) and cleans those up as well, pushes out a message (GCM, APNS, and our MQTT) with deleted data references (encryptedUUIDs) for devices to clean up.
For offline mode, senders can specify the "not available offline" restriction which makes the clients call a HEAD/GET each time visiting that encryptedUUID, purge decryption keys after use, and clear decrypted data after viewing.
Note: our system is more focused on removing trust in the cloud, not trust in your recipients.