GCM service - dynamic text - java

1) i would like to implement dynamic text feature in my server side (java - using GCM) - that mean that i need to custom the push body data to every device but i still want to push to multiple devices at one time.
(using multicastResult = sender.send(mess, devicePushTokenList, 3);
any body knows a way to do it in derver side? (i know a way to do it in the device time before the push arrives)
2) i know apple has a feedback service that i can run in any given time + the feedback of the push response. does GCM has this service too?
thanks!

If you want to use multicast messaging, you will unfortunately need to send the same message.
One solution (which I don't really like) would be to have your app request data from your server upon receiving the message and updating the message appropriately.
You're better off sending messages to each device individually.

As the other answer stated, multicast requires all the messages to be identical.
GCM doesn't have a Feedback Service, and it doesn't need to have one, since it returns an immediate response for each pushed message, and one of the error statuses - NotRegistered - covers the case of devices that uninstalled the app (which is what Apple's Feedback Service is for).

Related

Senting bulk mails to recipient individually using Java Mail API

I need to send dozens or hundreds of people the same message without having to display everyone's e-mail addresses.
Also I need tracking of respective action made to the each mail which i have sent (i.e., received status, open status, etc)
Say i am sending message 1000 recipients in a fashion of 50 reciepient at one time.
While i am sending the email in BCC mode, i can achieve that the same message sent to dozen of people without having to display everyone's e-mail addresses. But here i didn't able to track the respective action made to the each mail which i have sent.
while i amd sending the email in Normal mode, I can achive the both but it takes to long time to process all the 1000 recepients.
Is there is any better way to accomplish the both items which i need?
if so can you share with us to over come the problem.
I answered your question on the OTN Forum. Here's my response:
The only better way is to contract with a bulk mail service that will do all this for you.
Whether you can do better may depend on what exactly you mean by "track the respective action made to the each mail". If you want to know whether each recipient received the message or replied to the message, you need to send a different message to each recipient with some personally identifiable information. If you only want to know whether the message was delivered to each recipient successfully, and you're willing to depend on Delivery Status Notifications (which not all mail servers support), you can determine from the returned Delivery Status Notification whether delivery was successful or not for each recipient. But again, some servers won't return DSNs at all, and some won't return them in the standard format.
Also, I assume you've already tried using just a single connection to send a different copy of the message to each recipient, as described in the other answer. If you haven't tried that, start there. :-)
Have a look here: how-to-send-multiple-emails-in-one-session
If today you're using one Session and static Transport.send() per Mail, this could speed things up a lot.

Receive and read GATT notifications on Android

So right now, I'm currently using the TI SensorTag and edited it such that it will send a GATT notification with some data every time I press one of the switches on the device and followed this code where moisture is the data I'm trying to send.
static void sendData(void )
{
int length=0;
while(moisture[length] != NULL)
{
length++;
}
attHandleValueNoti_t nData;
nData.len = length;
nData.handle = length;
osal_memcpy( &nData.value, &moisture, length );
// Send the Notification
GATT_Notification( 0, &nData, FALSE );
}
Now on the Java side, TI provided the SensorTag app source code so I'm editing that to receive the data and save it into a .txt file for later retrieval. I was able to get the app to create a new directory on startup if it does not exist and create the .txt file and populate it with random strings with the same button press as the one used to send the data. A quick question I had about this is should this be done or should I use separate buttons?
What I'm having a huge issue even understanding is how to read the incoming notification or data. From what I understand so far, you need to know the characteristic or something of the incoming notification to read it? I do have notifications enabled on my central device so I know that I have at least that covered. For this kind of data transfer, I don't need to use any UUID things, correct? And if I do, would I be able to piggyback on one of the existing sensor services to do so? Or perhaps use the test service?
I've read a decent amount on BLE communications but I just can't seem to get it. How do I read the incoming notification or data I sent from the SensorTag through BLE?
A quick question I had about this is should this be done or should I
use separate buttons?
It's totally your call. If I were you, I would stick on to one button since BLE devices are better if designed the most simplest way. KISS.
From what I understand so far, you need to know the characteristic or something of the incoming notification to read it?
Yes, you need the same profile running on both the peripheral and the central to enable notifications. In Bluez for example, run the bluetoothd daemon with all experimental profiles to communicate with a TI Sensor tag like this: bluetoothd -E . The same logic applies for a central running on Java. Reference: http://www.amazon.com/Inside-Bluetooth-Communications-Sensing-Library/dp/1608075796
For this kind of data transfer, I don't need to use any UUID things, correct?
No, you don't have to since you aren't creating a new service but rather using the moisture sensor service already available on the device.
I've read a decent amount on BLE communications but I just can't seem to get it.
To know more about Bluetooth terminology such as profiles, services, characteristics, asymmetric architecture, etc, please read the following references to understand the theory behind what's taking place:
http://www.amazon.com/Inside-Bluetooth-Communications-Sensing-Library/dp/1608075796 (use this if you are already into the technical details of the project)
http://www.amazon.com/Bluetooth-Low-Energy-Developers-Handbook/dp/013288836X/ref=pd_sim_14_1?ie=UTF8&refRID=13KZ3RZ0VW93CK91RCM3 (this gives a more general picture of the BLE)

Low Energy Bluetooth in Android using GATT

I've done a lot of reading about LE Bluetooth and GATT but I'm still struggling to fully understand what GATT is. To make it simple I'd like to express how I'd like my app to work, and simply be told if it's possible or not? The basic premise is it will be used as a location tracker and beacons (maybe iBeacons specifically) will be placed around the building and whenever you enter the range of the beacon a message will be sent to the server from the phone. The idea is that it doesn't need to scan, the phone just simply listens and whenever a beacon advertises, the phones in range will hear this and raise an event.
Scenario:
Client downloads the app and enters the building for the first time.
The building has a beacon in every room, advertising every 5 seconds for example.
When the client walks into a room and is in range of a beacon, the phone will get an unfriendlier version of the message "Beacon 2 has an RSSI of -87".
When they leave the room they will no longer hear the message and so will do nothing until it hears another message from a beacon.
NOTE: This scenario doesn't involve any scanning, looping or pairing. The phone will just know it has to listen for LE Bluetooth messages.
So, is this possible? From what I've seen it seems like you need to scan and connect with each beacon using GATT before you can receive data from them.
Any infomation of this matter is greatly appreciated, thankyou!
Yes, this is possible.
Some high level scenario for a merchant store with beacon.
1) app client needs to have uuid or major id of beacons to be stored locally.
2) merchant store with same uuid or major id will broadcast messages.
3) phone OS keeps listening those messages when entered into geofence, OS will pass on these messages to the apps who are registered for beacons listening.
4) your app will match the uuid embed in the message and identify if its meant for it.
5) if message uuid does not match with uuid on client then app will not consume this message.
6) if message uuid matches then client will consume the message and display it on device, even your app is not running at that point of time.

Multiplayer-Game Network Protocol

I am responsible of the network part of a multiplayergame.
I hope anybody of you got some eperience with that.
My questions are:
Should I create an Object which contains all information (Coordinates, Stats, Chat) or is it better to send an own Object for each of them?
And how can i avoid the Object/s beeing cached at the client so i can update the Object and send it again? (i tried ObjectInputStream.reset() but it still received the same)
(Sorry for my bad english ;))
For every time send all data is not good solution, just diff of previous values can be better. Sometimes(eg 1 time for every 10 or maybe 100 update) send all values to sync.
1.in the logic layer, you can split the objects, and in transmission layer you send what you want, of course you can combine them and send.
2.you can maintain a version for each user and the client also have the version number, when things change, update the corresponding version in the server and then send the updates to all the clients, then the client should update version. it should be a subcribe mode.

send SMS using GPRS in MIDlet

i want to send a SMS using GPRS in MIDlet...
anyone can help me??
Thanks in advance...
Sending SMS is a HUGE beast to conquer. Now I don't know the first thing about j2me, but I do know a bit about SMS since I was at one point working on a similar project (abandoned for the reason below).
The short end of it is that you MUST use a GSM carrier to send SMS if you don't know what carrier to send to. This is because carriers know how to send the message to the appropriate cell phone.
You could send via email 5554441234#carrierdomain.com but the problem comes with the fact that you have to know which carrier the phone number points to.
Once upon a time you could tell the carrier by the second set of three digits xxxYYYxxxx (the y's), but you can no longer do this because of phone number portability.
In short, check out Kannel, but you'll still need to send via GSM (you can get PCI cards that hold SIM cards), or you can pay a subscription.

Categories