1) If a user mobile device is registered with GCM, then will the user mobile get a notification from GCM, if user has changed his SIM?
Or
2) Is it possible to link a SIM with GCM, so no matter how any android phones he upgrades but still recieve the notifications.
GCM definitely does not require a SIM card to be present at all. I just setup up a notifications app on an intl Note 3 with no SIM.
A notification developer can use multiple unique identifiers to link a user to a notification, but the user doesn't normally have any input as to which the developer chooses to use. In many cases you may be registered anonymously as a class, especially if the notifications are not personalized and broadcast to all users of an app.
Keep in mind that GCM notifications are finicky as to when they start arriving after the app is registered. For example, with the Note 3 I just setup, even after rebooting none of the 6 test pushes I sent were received. I also checked/unchecked the app's notification box in application manager (Samsung). I also installed 'Push Notification Fixer' (don't let you dissuade from using this, as it does work to keep notifications prompt after the first).
In this case, it wasn't until I changed Wifi connections that the queue was immediately triggered and flushed to the device. It's annoyingly arbitrary and a pain to debug.
If a user mobile device is registered with GCM, then will the user
mobile get a notification from GCM, if user has changed his SIM?
Yes, user will get GCM Notification. GCM Notification Flow has nothing to do whether there is any SIM in Device or not.
Also if user has not any SIM in device, Device can registered to the Server and will get GCm Notification.
Is it possible to link a SIM with GCM, so no matter how any android
phones he upgrades but still recieve the notifications.
Possible, Your app needs to be installed on the devices and register the device and sim id with your server.
Check TelephonyManager for getting the information you need and then create a database on your server with the relationship between user/sim/whatever(phonenumber?) <-> gcm notification id.
http://developer.android.com/reference/android/telephony/TelephonyManager.html
Basically most apps that send User specific notifications register the user with some identification additional to the device, your sim id can be that identification. you should take into consideration that if a sim is lost then you won't get the same sim id again (it's not your number).
Related
Scenario: Suppose I have set up some WiFi and have one server in it. When android user connect to that WiFi area then I want to send notifications to those devices which is connected with WiFi. I don't want user, to install any app in their devices to receive notifications.
Can I use any system service to receive notification which is already running in the device? or something else which help me in this.
You can create a login page to force users to allow notifications. After the user allows the notification, internet is free to use.
That way, you can send notifications without installing any app.
I have developed one Android app for the company which has Push Notification(GCM) as well.
When they send the notification and that time if the device is connected in their wifi network then notification doesn't come but if the device is connected to mobile network (3G/4G) then it receives the notification.
Their system admin might have blocked that web address but nobody knows exactly which address.
So, I just wanted to know which Google API gets called when notification arrives so that I can inform their System Administrator to unblock that web site/web address
Ask your admin to open port number 5228, 5229 & 5230. Hope this solves your problem
For your question, 'What Google API gets called when notification arrives"
To receive messages, use a service that extends GcmListenerService to handle message capture by GcmReceiver.
By overriding the method GcmListenerService.onMessageReceived, you can perform actions based on the received message.
I am using GCM service to send some notifications in my android application.The notifications are pushed to other android device perfectly if that device is online(Use wi-fi or mobile data).But if that device is offline, then the GCM push notifications does not get to that device after it get online.Is there any code that I should add specifically to do this task or any other configurations to be configured?
In order for your message to be delivered on a device (that is currently offline) when it goes online. You can check the Time-To-Live parameter in your request. This parameter tells the GCM storage how long (in seconds) the message should be kept if the device is offline. It can be set up to a maximum 4 weeks which is also the default value if you don't specify one.
I was searching this for the last 2 days but I cannot find any answer. All what I want is to send GCM push notification to a particular phone using its phone number instead of register id(of course the device that has this phone number installed my app. ).
Is this possible? If so how?
GCM does not use or register phone numbers. You could possibly assign a UserID of some kind on install, perform a PUSH that results in data sent to your server with all those ID's so that you can connect to a phone number - but there's no reliable way to guarantee that you have the correct device phone number unless the user enters it.
Programmatically obtain the phone number of the Android phone
GCM does not use the phone number (and probably Google does not want it). That's typically called "SMS" or "MMS"
I want to implement Push Notification for an App (both iOS and Android) and need clarifications on the following scenarios.
I understand how the Push Notification works in general and the limitations. I did read the docs but that just got me confused and didnt answer all my questions.
How are the following scenarios handled in iOS and Android:
When the device is turned off
When the device is not connected to 3G or Wifi networks
When the device has crashed and need restart
When the App is in foreground
When the App is in the background
When user is currently using the App
When my app is closed (not opened / launched)
When a push notification is user specific and both users share the same device and app. Example: If a husband and wife share same device and use a bank App with Push notification.
Can you send User specific notification if device is shared by multiple users?
When user has installed App on multiple devices
Can you send a notification to all devices registered by a user at once?
Do you store the device type (iOS or Android) with the registrationID in the User table or is there a way to differentiate the type of device by inspecting the token or registrationID?
Can you cancel a previously sent notification which is not read yet and send a new one?
Is it still true that Android Push Notifications does not work on Kindle Fire and will need to implement Amazon Device Messaging
Anything else that I need to think of or plan? I am aware of handling un-registering and feedback service
I would answer some of your questions, specific to android thought. Don't know about iPhone, If its of similar kind or not.
The device receives notification from Google Cloud server as and
when the notification is triggered by the server and it doesn't have
any relation with application state (Running, Closed, Background or
foreground).
If the notification is sent to a device when its not connected to
the internet ( switched off or not connected to the net) , it gets
notification only when it connects to the network. However, if the device
is crashed and restarted after the notification is received, you
won't get the notification again.
Is it user specific?
It depends on the individual servers implementation.
Do we store device type?
Yes we can.
Can we differentiate the IDs of iPhone and android?
Yes, android Device IDs are longer in length than iPhone's.
Can we cancel an already sent notification?
No, it is a one way communication channel as far as I know.
When the device is turned off:
Answer:
IOS/Android Server (Not your Server) will handled when to send the Push Notification. It checks that device is reachable or not. We can define that how many times IOS/Android Server should try to send Push Notification.
When the device is not connected to 3G or Wifi networks
Answer:
Nothing related to 2G/3G/Wi-Fi. Device should be connected to Internet via any network.
When the device has crashed and need restart
Answer:
IOS/Android Server checks that device is reachable or not.
When the App is in foreground
Answer:
Nothing related to app in foreground.
When the App is in the background
Answer:
Nothing related to app in background.
When user is currently using the App
Answer:
Nothing related to app being used currently.
When my app is closed (not opened / launched)
Answer:
Nothing related to app is closed.
When a push notification is user specific and both users share the same device and app. Example: If a husband and wife share same device and use a bank App with Push notification.
Answer:
It depends on how you have implemented on YOUR Server. You will be managing Device Id for each user. So it's upto your implementation logic to send to same device for multiple users.
Can you send User specific notification if device is shared by multiple users?
Answer:
It depends on how you have implemented on YOUR Server. You will be managing Device Id for each user. So it's upto your implementation logic.
When user has installed App on multiple devices
Answer:
It depends on how you have implemented on YOUR Server.
Can you send a notification to all devices registered by a user at once?
Answer:
Yes again as per your implementation logic.
Do you store the device type (iOS or Android) with the registrationID in the User table or is there a way to differentiate the type of device by inspecting the token or registrationID?
Answer:
Yes you need to store the device type, to identify to which Server (IOS/Android), you need to send request for Push Notification.
Can you cancel a previously sent notification which is not read yet and send a new one?
Answer:
No you cannot cancel the request.
Is it still true that Android Push Notifications does not work on Kindle Fire and will need to implement Amazon Device Messaging
Answer:
Need to google it around.
Anything else that I need to think of or plan? I am aware of handling un-registering and feedback service
Answer:
Need to google it around.