I have an app, that sends push notifications to android and iOs devices via GCM.
It all works, users receive pushes, but today one of my users (7k kilometers away) said that she doesnt receive notifications.
We remotely checked everything:
1.pushes are enabled for my app (we even uninstalled it and installed back),
2.token is successfully received and saved on server,
3.google in response to push sent answers with
[{"multicast_id":6200102626600584726,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1478850747416917%289a1a60289a1a60"}]}]
wich seems ok and there no errors.
4.Applicaion is on the background.
But NO NOTIFICATION received anyway.
I dont know where to dig now - all my phones and phones of my friends/collegues receive pushes just fine. Andriod version is 5.1, Phone is Meizu m3 note (never seen one like this).
Can anyone advise what try next?
EDIT: gmail notifications work on her phone... Not sure, but I think that Google play is working fine and installed properly...
I am relatively certain that the user in question does not have a fully functional Google Play Services / Framework installed.
Their device seems to not include these as a search on Google reveals:
I will ask someone that is successful to install Google Play in Meizu M3 Note, please guide me how to install Google Play Store in Meizu M3 Note.
The best thing to do is to check with them if they have the services installed, and if they do, what version (is it current and updated?).
If not, see if they can install it or update it to the necessary version.
If that is still a no-go. They are likely a lost cause for using GCM.
Related
I have an Android app published on Google Play. The issue is that only 5% of its users have updated it to the latest version. I'm guessing they are either not using the app and/or have turned auto updates off.
Is there a way to communicate to them using, let's say, notifications that a new version is out and they need to update the app?
I have implemented the In-app-update API into the newest version but the thing is that the users will first have to update to this version, before they get in-app pop ups about app update.
Any help would be a great help!
Thanks
Unfortunately I think you're out of luck. Unless another avenue was implemented in the older version of the app to allow for some sort of notification, there is no way to contact users who have not updated. The best you can hope for is that the users notice they have a pending update in the Play Store, and decide to update.
The only things that I can think of (based upon the assumption that old app has no code to deal with a newer version):
If oldApp supports Push notifications, you may have a chance firing one to let your users know (not super reliable for they may have them disabled)
You can try pulling the app from the Google Store (so they can no longer download it), this will cause your users to get the new one if/when they reinstall or try to find it again.
If there's a backend service your App talks to, and you can tell which version of the client is calling you (I'd hope this is something you did... as it's pretty basic), then you could start returning 500 errors and let your users "see the app no longer works" and deal with the support tickets and reviews and what not... but at least you can tell them: "download the latest version, I no longer support that".
I cannot think of anything else that you can remotely do.
I have implemented FCM according to official documentation.
I do get the messages while the app is in the background or foreground state, or even if it is swiped out of the recent apps screen.
The problem is, that on Samsung S8, messages are not received at all when the app is in the background. (other devices do not have this issue).
To add to the confusion, this problem takes places only with the RELEASE build version of the app. With debug build version everything works as expected.
If you have encountered something similar, please share your experience.
UPDATE
The problem might be that SHA-1 fingerprint for the RELEASE certificate is not stored in the project in Firebase. It is easy to forget to put it there during development.
I had published an app on Google Play. According to me I need to change the versioncode in the gradle file everytime I upload the new APK and from there, Google Play does the job of notifying the users about an available update. I am in touch with many real world users who say they never got a notification about app update despite the several updates I had published to the original app. I know that there are certain device level play-store settings such as "Update app only on wi-fi" etc. and I've verified all such combinations of scenarios. I still believe that all the users are not notified about the new version available. So my questions are
1) Am I missing anything in the first place?
2) What are my options to make sure the user gets notified about the available update?
When you publish you app it takes some time(may be hours) to update world wide. So User's will not get immediately notified as soon as you publish.
It will also depend on the settings of playstore in user's phone and also the network user is using(i.e. wifi or data).
I have also faced this issue. When I checked for updated version, I did't get it but when I cleared data of playstore from my application settings and force stopped app and then reopened it and I was able to see the updated version.
So from your side you are not doing anything wrong. It's job of playstore plateform.
Only the thing which sometimes happens with the developers is that we continuously use our device to run app by using USB debugging and then we publish our app to playstore. And then we wait for update notification but we will not get notified as the versions in our device and on playstore are same.
The developer console for android has functionality for reporting runtime crashes if users decide to report a crash. Other frameworks has similar features that sends crash-reports without involving the user.
Does anyone know of a way to report installations or upgrades that has failed? With android 5.0 I am getting more and more user-reports of failed installs, but it is hard to obtain logs from non-technical users of my app.
You cannot detect whether or not an installation has failed yourself, because there is no way to execute code before your app is actually installed. So the logical app to do such a thing would be the market app triggering the install (i.e. Google Play). This not only knows when each installation starts, but also knows all details about the apk to report to the right developer.
Unfortunately however, Google play does not support this currently (as far as I know) and hence you cannot detect failed installs.
On older Android phones you could ask users is to install a "logcat app" and email the logs to you for analysis, but this will only work for devices older than Jelly bean. (Read this Link)
The best solution I can come up with (Mac only) is to ask users to install AndroidTool, press one button to generate a bugreport and email that to you. Not great, but for now the best you can do.
You can build an api that reports successful installation. Just call the api in onCreate of first activity. I don't think there is need to collect log on why the installation failed, is it needed ? You can do the same for upgrade, call an api one time from upgraded code.
I developed an Android app that receives notifications from a web server. I am using GCM (Google Cloud Messaging). Everything was working, I was able to receive notifications almost instantly. Then it stopped working. When I went into the Google API console of my project, I realized that the API key under "Key for browser apps (with referers)" was now showing under Obsolete Key and there was a new API key. The status was set to inactive.
I updated my API key in my project to the new one and now I can receive notifications to my app. It seems like the problem is solved (though the status is still inactive) but I want to know why this happened in the first place and I need to prevent it from happening again.
I would really appreciate it if someone can help me with this.
Thanks!
It is because Google periodically updates its APIs and deprecates older ones.