Hi i'm creating a GCM application
on my normal galaxy s4 it works, but on my dev phone (galaxy S1, 2.3.3, without sim, own google account) i keep getting this error
java.io.IOException: SERVICE_NOT_AVAILABLE
at com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source)
my register code
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
any hints why?
GCM does not need your phone no. It does not require you to have a sim installed in your device.
It requires internet connection, Google account setup in the phone, Google Play Store to be present and it should be linked with the same google account.
ok found this
GCM SERVICE_NOT_AVAILABLE on Android 2.2
which means
gcm.register(SENDER_ID);
still fails, but somehow in the GcmBroadcastReceiver you will get the regid by event... i think i'll use this workaround
Related
EXPO SDK Version: 42.0.01
Developing for: iOS
Our goal: successfully send a test notification from Test Send tool in Azure Notification Hub to a registered physical iPhone which is running a local instance of an EXPO app.
Progress: we're able to successfully register a physical iPhone with Azure Notification Hub without using a 3rd party library. We can see that registration in the Hub.
Issues: when using the Azure's Test Send tool we're getting an error "The Push Notification System handle for the registration is invalid" and the test notification does not get delivered.
Debugging:
we're using EXPO's Notifications.getDevicePushTokenAsync() API to obtain the push token.
Azure support team analysed the logs and concluded that the problem is the PNS handle i.e. Apple's ID of the phone registered for notifications.
the phone's PNS handle remains the same at all times.
by using "expo credentials:manager" I've added a new Push Notification Key using KeyID, TeamID and .p8 certificate - the PNS handle didn't change after doing that and notifications were failing too.
I haven't found any tools to validate the APNS handle. I'm currently awaiting a .p12 certificate from our corporate team to test notifications by using https://pushtry.com/.
How do we validate the APNS handle and if found that it's invalid - how do we cycle it / request another?
The PNS Handle from APNs does not change that often as it is tied to the device and app installation. See this answer for more details Does the APNS device token ever change, once created?
I'm implementing FCM on Ionic 2 (AngularFire2 & Ionic Native FCM: cordova-plugin-fcm#2.1.2) currently testing iOS on an iOS 11 device.
FCM messages never arrive on the device. I get no errors from either the console sending messages or when sending messages via cURL.
I've gone through the troubleshooting steps from the Google dev advocate.
I've verified that a notification sent directly via Apple's APNS server gets delivered to the device when the app is in background, and the app when the app is in foreground. (I pulled the actual device token to test this.) i.e. APNS certificates are fine.
FCM initializes with no errors (watching the logs in Xcode) and FCM does retrieve a (seemingly) valid FCM token.
I've just ensured that all my npm modules are at the latest versions for firebase, angularFire2 and fcm.
I've verified that 'GoogleService-Info.plist' is in my resources folder
Bottom line: My APNS certificate is valid and seems to be correctly setup in the Firebase console. APNS direct messages work fine. FCM messages don't return an error, they just never get to the device. Seems to be getting lost in the FCM end.
Does anyone have any suggestions on how to further debug this?
thx.
I am using gcm with appodeal in my app and when I am sending the push notification the for the first push was successful but phone is not receiving the notification and after that error is there while sending push that device is not register. What to do in this situation please help me.
Is it iOS or Android ? I had the exact same issue just yesterday with iOS and all I had to was to create a development provisioning profile and set it up properly in xCode. I hope that helps you.
I think for you to verify that your app can send and receive messages, client apps must register with GCM.
To register with GCM:
1.The client app obtains a registration token using the Instance ID API. The call to this API must have the authorized entity set to your app server's sender ID, and the scope set to the appropriate value for GCM (depending on your platform). Refer to the API reference for full detail on this API.
2.The client app passes the registration token to the app server.
3. The app server saves the registration token and acknowledges to the client app that the process completed successfully.
This thread may also provide further insight as to why you are receiving the device not registered error.
Is it advised to backup GCM id using android cloud back up ? i am storing the GCM id in a sharedpreferences so i dont have to keep registering.
if i backup this GCM sharedpref and user changes devices do i need to update it to a new registration id ? Is the registration ID device specific ? What happens when user changes devices and backs up ?
I tried and read this from the docs:
You must exclude any device specific identifiers, either issued by a server or generated on the device. This includes the Google Cloud Messaging (GCM) registration token which, when restored to another device, can render your app on that device unable to receive GCM messages.
From the docs i found my answer that the reason this should not be done is that it can intrefer in the apps intialization of gcm and it will not try to get the GCM id if its already restored from a new device that restored a old registration id.
Handle Google Cloud Messaging
For apps that use Google Cloud Messaging (GCM) for push notifications,
backing up the registration token that Google Cloud Messaging
registration returned can cause unexpected behavior in notifications
for the restored app. This is because when a user installs your app on
a new device, the app must query the GCM API for a new registration
token. If the old registration is present, because the system had
backed it up and restored it, the app doesn't seek the new token. To
prevent this issue from arising, exclude the registration token from
the set of backed-up files.
I am using a mobile (Fly F45Q) and i got daily a new GCM id for my android application. this is not happen in other mobile Like (Samsung core/samsung at&t ) etc.i don't understand what is happening with this mobile.
can anyone please suggest to resolve this problem.
As google stated the registration ids are invalidated on the version change of application, also there is a possibility that the registration id gets changed on reinstall of the app. Not sure why its happening on this particular device. Is this change of registration id, only for your application or every application ?