I get the distinct feeling, based on the WWDC presentations, that group iMessage apps are either incomplete or not really thought out. Add to this that there are no group conversations possible in the simulator. The group message part of the demo was just a couple of slides and he used the phrase "we are recommending for the moment" which leads me to believe that Apple probably has unfinished business here. I think that the idea of making MSSession the carrier of data and make each subsequent message create a stack of unprocessed responses so that when the user clicks on the bubble it sees each response and can process them one by one.
What I'm wondering is, in the same section, they talk about privacy. So each device will get different identifiers for each user. If you are using the cloud, I don't see how you can then aggregate responses correctly. Take this scenario:
I send an iMessage App (IMA) to two of my friends and it asks them to pick what they want for lunch.
- Friend A responds with Chicken Sandwich
- Friend B responds with Chinese
Now we saw in the demo that this isn't going to work well as chances are you will only end up opening the response that comes in second. So Apple's solution is for you to have your friends devices upload their preference to the session URL. So far so good. Now we have our cloud service (which we will have to build) and it can accept and aggregate all responses. The only trouble is, it would look like this:
- Friend A responds with Chicken Sandwich: their phone uploads { "EA0...": "Chicken Sandwich" }
- Friend B responds with Chinese: their phone uploads { "D39...": "Chicken Sandwich" }
Assuming that you are using their local device user identifier for the key.
Now when your app downloads this data, you have no way to tell who is who. Because your device has it's own private identifiers for these users which will not match the ones uploaded. I guess each device could add the name of it's user to the payload but that's a hacky way of doing things. Privacy is great but this seems to lay down the gauntlet for developers to work around Apple's privacy and effectivly leak data into the cloud service.
Apple demoed a restaurant menu app that allowed them to all see who was ordering what. I wonder how they went about this given the deliberate obfuscation of user IDs? They must have also been using a cloud service to store the menu selections?