You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 7, 2022. It is now read-only.
This change:
* Moves Parse back to using public APIs [GitHub discussion](parse-community#445)
* Cleans up a lot of code in GcmRegistrar that is redundant with GCM APIs or written before Bolts
* Fixes a typo in manifest instructions that used a literal bool instead of "bool"
* Fixes a bug where ParseInstallation did not save the GcmSenderId and Parse didn't use the developer's secrets.
* Fixes a bug where Parse incorrectly blames an improperly configured manifest when GCM isn't available because Play Services aren't available.
* Add a compatibility shim when reading payloads so customers whose push provider uses the (now) standard intent structure expected by [GcmReceiver](https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmReceiver) can use the ParsePushBroadcastReceiver instead.
* Add support for GCMv4, including a new optional intent to be notified InstanceIDs are invalidated client-side.
The new protocol has a number of benefits:
* The new GCM v4 model is more stable; it is based on a device-owned InstanceID. Push tokens are OAuth tokens to that device.
* As a result of the above, this should fix a Parse Push bug where the first GCM push after an app upgrade might be doubled.
* This API has a callback in case the InstnaceID is invalidated, which should reduce client/server inconsistencies.
* These tokens support new server-side APIs like push-to-topic, which are _dramatically_ faster than the normal ParsePush path.
* When a device upgrades to GCMv4, the device keeps GCM topics in sync with channels. This paves the way to implement push-to-channels on top of topics (or a customer to try another push provider by next Jan and retain some targeting info).
This has two possibly controversial requirements:
* The new API issues one token per sender ID rather than one token that works with all sender IDs. To avoid an invasive/breaking server-side change, we are _no longer registering for the Parse sender ID_ if the developer provided their own. We will also only support at most one custom sender ID. I've had a number of conversations about this and nobody seems concerned.
* This change introduces a dependency on the Google Mobile Services SDK. The dependency is just the GCM .jar and does _not_ limit the Parse SDK to devices with Play Services (tested on an ICS emulator w/o Google APIs). I originally tried doing this without the dependency, but the new API has a large amount of crypto and incredible care for compat shims on older API levels. I assume my hand-crafted copy would be worse quality.
0 commit comments