{"action":"created","issue":{"url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/572","repository_url":"https://api.github.com/repos/parse-community/Parse-SDK-Android","labels_url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/572/labels{/name}","comments_url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/572/comments","events_url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/572/events","html_url":"https://github.com/parse-community/Parse-SDK-Android/issues/572","id":201108587,"number":572,"title":"[Discussion] Where to go with the Parse Push for Android","user":{"login":"inlined","id":1553807,"avatar_url":"https://avatars0.githubusercontent.com/u/1553807?v=4","gravatar_id":"","url":"https://api.github.com/users/inlined","html_url":"https://github.com/inlined","followers_url":"https://api.github.com/users/inlined/followers","following_url":"https://api.github.com/users/inlined/following{/other_user}","gists_url":"https://api.github.com/users/inlined/gists{/gist_id}","starred_url":"https://api.github.com/users/inlined/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inlined/subscriptions","organizations_url":"https://api.github.com/users/inlined/orgs","repos_url":"https://api.github.com/users/inlined/repos","events_url":"https://api.github.com/users/inlined/events{/privacy}","received_events_url":"https://api.github.com/users/inlined/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2017-01-16T20:08:40Z","updated_at":"2018-04-10T23:01:59Z","closed_at":null,"author_association":"NONE","body":"Given the coming shutdown, I think it's time to discuss the plans that would replace [my old attempt at fixing Push](https://github.com/ParsePlatform/Parse-SDK-Android/pull/452). What should change in the Parse SDK? The new FCM SDKs have all the right bindings so the Parse SDK can be built to work natively with FCM without requiring the compile-time dependency on GMS. It'd be a bit of dead  code when users don't use Push and very thin stringly-typed bindings when it is there. The recommendations I'm feel are clear:\r\n\r\n1. Rip out PPNS if it hasn't been done already.\r\n2. Rip out all existing Push code actually (not ParseInstallation, just all the push utils for registering). Stub classes may need to be available for a while to keep the manifest references working. Changes to the manifest have always caused customer support issues.\r\n3. Deprecate the senderID field in the manifest. To use FCM you already need googleservices.json which includes this. Parse's one-off attribute will on longer be read in the FCM so it should be dropped from documentation to avoid confusion.\r\n4. Add or reuse a BrodacastReceiver to receive the `com.google.firebase.INSTANCE_ID_EVENT`. If I recall the innards correctly, this may be a local broadcast event so it could possibly even be done dynamically. To avoid an SDK dependency on GMSCore you'll need to find out which extra had the InstanceId before you stuff it in the ParseInstallation. About 10LOC can replace hundreds of push code and without any GMSCore dependency.\r\n\r\nThe last bit I'm not clear about is what should be done with `ParsePushBroadcastReceiver`. It has [a lot of cool features](http://blog.parse.com/learn/android-push-gets-major-refresh/) that I was proud of at the time, but it's largely redundant with `FirebaseMessagingService` now. For better or worse, its interpretation of the payload sets the standard. Parse developers will be able to use multiple push providers if they use a standard message payload.\r\n\r\nParseServer should probably have android-specific code (just like it has iOS specific code) to push the visible fields into the `notification` key. From there I'd recommend either promoting `FirebaseMessagingService` as as a single standard across Android or upgrade `ParsePushBroadcastReceiver` to understand `notification` in the payload."},"comment":{"url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/comments/380274452","html_url":"https://github.com/parse-community/Parse-SDK-Android/issues/572#issuecomment-380274452","issue_url":"https://api.github.com/repos/parse-community/Parse-SDK-Android/issues/572","id":380274452,"user":{"login":"Jawnnypoo","id":1459320,"avatar_url":"https://avatars3.githubusercontent.com/u/1459320?v=4","gravatar_id":"","url":"https://api.github.com/users/Jawnnypoo","html_url":"https://github.com/Jawnnypoo","followers_url":"https://api.github.com/users/Jawnnypoo/followers","following_url":"https://api.github.com/users/Jawnnypoo/following{/other_user}","gists_url":"https://api.github.com/users/Jawnnypoo/gists{/gist_id}","starred_url":"https://api.github.com/users/Jawnnypoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jawnnypoo/subscriptions","organizations_url":"https://api.github.com/users/Jawnnypoo/orgs","repos_url":"https://api.github.com/users/Jawnnypoo/repos","events_url":"https://api.github.com/users/Jawnnypoo/events{/privacy}","received_events_url":"https://api.github.com/users/Jawnnypoo/received_events","type":"User","site_admin":false},"created_at":"2018-04-10T23:01:59Z","updated_at":"2018-04-10T23:01:59Z","author_association":"COLLABORATOR","body":"We've got to make a move on moving from GCM to FCM by the end of the year. \r\n\r\n![image](https://user-images.githubusercontent.com/1459320/38587957-13ef7bb2-3ce9-11e8-94aa-c9f316ea90b4.png)\r\n\r\nMy recommendation would be to not go the current way of avoiding Play Services dependencies, and instead, make a `Parse-SDK-Android-FCM` repo which has the needed code and setup. This way, people can include and use the FCM support if they want/need it and are not forced into any unwanted dependencies. "}}
{"actor":{"display_login":"Jawnnypoo"}}