Android and iPhone PNS details - c#

i am crating a wcf data service for sending notification to iPhone and Android devices. i am writing server side code to register the devices, i just want to know what all information iPhone and Android send to server for registration process and what all things i need to store in my data base for sending notification to iPhone and Android.

Android and iOS PNS are really different, and will not send the same amount or structure of information to handle device registration, unregistration and message handling. You should start from the specific documentations from both those worlds and implement different services for each of them. These two worlds cannot be collapsed into one, I fear ...

WCF Data Service will not allow you to do push notifications to Android and iPhone. WCF Data Service (OData service = REST) offers only request response message exchange pattern where client (Android and iPhone) must ask for data by sending a request.

Related

Azure IOT Hub - Monitor Device-To-Cloud communication from 1 device

There are x number of devices in system and y numbers of device owners. These devices are actively sending data to Azure IOT Hub - temperature, humidity, voltage, etc.
These devices have RFID chips inside them that store information about device and I'm working with Xamarin.Forms project that would allow android/iOS users to get this information.
Upon retrieving this information about the device, I want users to be able to see and monitor the device-to-cloud Azure IOT communication.
In similar fashion, I'm working on a web dashboard, where user could just select device from dropdown/selection and do the same thing.
I've tried implementing the
Azure Device Explorer approach, however here's the problem; in Azure IOT Hub, one consumer group can only have 5 clients and once, meaning, if 6 people want to monitor the live device-to-cloud communication, only 5 people will be able to do it. Furthermore, what this example does is - get all incoming IOT Hub messages, query and filter only the information that the user wants to see - which would probably put quite of a load on mobile phones.
So the question is: Is there a way to see live device-to-cloud Azure IOT Hub communication from a single device?
I'm open to adding other Azure services.
The Azure IoT Hub telemetry path (hot path) is a data stream of all devices ingested internally into the default built-in Event Hub or externally via the custom endpoint. To see a telemetry data from the single device, it is necessary to capture a telemetry stream and use a filtering technique for a specific data. In other words, the telemetry stream must flow transparently in the stream pipeline without any latency and the capture point will hold a copy of the telemetry window.
This warm path is close to the real-time (hot path) and it can be configured from 1-15 minutes.
The following screen snippet shows an example of the warm path using an Event Hub feature such as Capture. Note, that this feature is not in the Azure IoT Hub, so that's used a custom endpoint with an external Event Hub:
Once we have a telemetry warm path (stored in the Blobs, for example each minute), we can query a device messages, twin changes events and device lifecycle events based on the time, value, etc. by user request, eventing or trigger.
I am working on a similar project, we developed a web app with back end database. this db stores all the iot messages as it comes in, web app send the push notification via azure notification hub to the mobile clients interested about a device. All the business logic and operations is written in the web api project.
Mobiles directly do not communicate with IOT, they communicate via api to get the information from db, and using push notification helps to keep everything real time.
we are using azure functions for reading message from iot as it comes and process.

How to obtain GCM registration id using only C# code?

I want to send push notification to Android device using Amazon SNS service.
But as listed on Amazon's official site:
You send push notification messages to both mobile devices and desktops using one of the following supported push notification services:
Amazon Device Messaging (ADM)
Apple Push Notification Service (APNS) for both iOS and Mac OS X
Baidu Cloud Push (Baidu)
Google Cloud Messaging for Android (GCM)
Microsoft Push Notification Service for Windows Phone (MPNS)
Windows Push Notification Services (WNS).
So I am using GCM as an intermediary to send push notification to my Android device.
Here is an another link that states how to create project with GCM: http://docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html.
So far I have able to successfully create project in Google with my Server key and project number but only thing I am not getting is how to generate Registration Id and from where.
Do I need to programmatically generate registration id from my C# code?
But I couldn't find any code in C# to generate registration id. I have just find code in Android to generate Registration Id.
Having just set up SNS for a mobile app let me try and clarify a few things about SNS.
Amazon SNS is the intermediary not GCM. The workflow goes like this:
Using the GCM Project Key you set your app up for push notifications
A user downloads your app and when it launches, it connects to GCM
and lets Google know that this app/user combo would like to receive
push notifications.
GCM sends back a device token that represents this individuals device
and app instillation.
You send this device token to your c# server code where you can use
the SNS api to register the token with amazon and save it as a SNS
mobile endpoint.
Then you can use that endpoint Id and your server API key to send out
the notification.
This part of the documentation should be exactly what your looking for.
Hope this helps,
http://docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html

Google cloud message(android) and window form(C#)

I want to send message and specify phone number from destop window application(my app on destop) to android application(my app) on mobile device by google cloud message.
So I think I must create a new web service so that I can push message from that service to google cloud message.How can I can do that?
You will need the deviceID of your android device to send a notification to the device. So, you will need to design your web-service to have following functionality:
Receiving the deviceID from the android device.
Sending a message to the device whose deviceID is known to you. Your desktop app will need to talk to your web-service which can in-turn send message to google servers. GCM will handle sending notification.
The part of obtaining the deviceId of a android device to sending message is explained well here:
https://developer.android.com/google/gcm/index.html

Setting up push notification for windows phone. MPNS and its role

I have read this:
http://msdn.microsoft.com/library/windows/apps/ff402558(v=vs.105).aspx
This is the API documentation of the push notification service I want to get pushes from: https://developers.podio.com/examples/push
How do I go about implementing push notifications with Podio if they do not support MPNS. It looks like (from the msdn documentation) that they will have to send the notifications to Microsoft Push Notification Service at stage 5.
Is there a way around this stage? Can I communicate directly with Podios PNS somehow? Why should Podio who are protected by Citrix have to send sensitive data through Microsoft's service when they have a service workflow of their own? I'm struggling to understand this!
Related documentation:
http://forums.wpcentral.com/windows-phone-8-guides-how-tos/234780-how-push-notifications-work-why-sometimes-they-might-not.html
EDIT
If I set up a service of my own that Microsoft's push notification service interacts with... I can then make interactions on behalf of Podio... Is this normal practice?... I'm assuming that the lag of double dosing requests is going to be pretty useless for something like a messaging application.
I noticed that Android seems to also now have a middle man service... But I assume that having the choice means large companies who do not want to make a handshake with a third party company do not have to?
http://developer.android.com/google/gcm/gcm.html

What is the name of the service to be used for push notification?

I read about push notification in Windows Phone 7. I could use this mechanism to receive notifications from a web service: obviously, the web service must be designed to send notifications.
Can I use the push notification without knowing the name of the web service, but knowing its IP address and listening port?
What types of WCF bindings are supported by Windows Phone 7? I read that I can use only HTTP calls. So can Windows Phone 7 communicate only with BasicHttpBinding web services?
Regarding your first question about push notifications:
Your app will need to know about the web service you wish to receive messages from as you must pass it the channel Id to use to send messages to your app on that device. You don't need to know the "name" of it. You just need a Uri, which could, of course, just be an IP address and port number.

Categories