I finished the decision system. I will explain the working of the system during my presentation on Wednesday. I checked most of the queries, not all of them, the simple update, insert and select queries will be automatically tested once a client is linked with the web service. So there is no need to spend time checking them now. The more difficult queries that support the working of the decision system have been tested however and all work. So the backend is as good as done. I also started with the push notification server. I can send messages now to the devices, I just need to pass the information needed for an emergency case and that part is done as well. Will try to finish this before the presentation and maybe implement what the client needs to do when a message is received. Don’t know if I will finish this in time for the presentation. But I am glad the back end stuff is as good as done and we can start linking the client with the web service.
I have finished making a MySQL database. This for the users to log in, to store their whereabouts and for the pushing of the GPS location and linking an iOS token to a person. Furthermore I have set up a web service that works with JSON, this service the device will access for doing all the things I mentioned above. This web service is done although not all the functionality has been tested, will explain later why. The web service uses stored procedure of the MySQL database so in the web service no queries are defined. These procedures have been written as well although again not all of them where tested.
Why is not everything tested? Because I am still working on the push notification server. I have wrote the client code for connecting to the push serve, but not the server code. Therefore the devices don’t get iOS tokens. These tokens are necessary for pushing the notification and updating their location and so on.
I also wrote a query for the decision system based on the pushed GPS location. The query will return all tokens and their location ordered by distance between them and the victim it will also show the update time. The push notification will have to retrieve these information remove all the users with a distance larger than one kilometer and also those entries whose updates where to old.
So there is still a lot to do. First the push server has be implemented, working on that as I wright this. Then the decision system has to be implemented. The decision based on the victim’s location and the pushed GPS location is easy now based on the query, but then the AED locations have to be integrated, so the users are routed first (if possible) to the nearest AED. Also if there aren’t enough users we will use their whereabouts stored in the database as well. After this is all done, implement it in iOS so the devices know what to do when a push notification comes in, maybe check again if they’re really in the neighborhood and then testing.
I am still a bit undecided here. Because as Gert Vanwijn replied at one of my blog posts. It would be nice to let the application decide whether or not the notification is intended for the user or not (if he is near enough to the victim. It would save a lot of battery and the server should have to do less calculations. However I don’t if it is possible to intercept the notification in your application before showing it to the user. Because the whole point of the notification is that the application doesn’t have to run in the background, but if it isn’t running how can it handle the notification? I read this tutorial:
And it says:
And when an event of interest occurs, the server-side component can send the app a push notification! There are three things a push notification can do:
Display a short text message
Play a brief sound
Set a number in a badge on the app’s icon.
So I don’t really know if that is possible, but I will look into that some more.
But if you know how I would like to hear about it because indeed that would be better!
The other approach is deciding server side who gets a notification. This will mean the user will have to push their location to the server on regular basis. So that application will have to run in the background. I am still undecided on the number of people I will want to notify. But for example I want to notify 30 people. I will send the 30 people whose current location is the closed to the victim. However it might be so that we don’t reach 30 people. This can be because the last update was too old and not representative anymore. People might have closed the application unaware we need their actual location or just turned off there GPS to save battery. What I want to do then is use there profile settings. As I mentioned in my presentation I studied other projects and many of them use the profile settings of the user to know where they are. That’s what I wanted to do as well if we don’t reach to number we set using the current location. So in their profiles they will have to state where they work or live and when they’re there.
So first take the current location if we don’t reach enough people look at where they work or live and send those people a notification as well until we reach the desired number.
When the notification system is ready for use (hopefully mid March) I can start testing in the field. I will use the iPhones made available to us by the department. It will require some preperation, because it all depends on the location where we will be testing. So an AED has to be nearby, the victim should be in a 1000m radius from our start location, … But that shouldn’t be too much of a hassle.
Again I will probably ask people who aren’t that experienced in computers to do the testing. As the people people of computer science tend to give more feedback towards the build and interface then how easy and intuitive it is to use. Maybe in a later stage if there is time, I will ask them the same to add more features to the application (if there is time!).
The evaluation process was about the same as used for the paper prototype. I asked people who are not in computer science to perform some tasks with the application and afterwards made them fill out the System Usability Scale. The tasks where about the same as before for example show me all the AEDs nearby on a map, show me the legal information document, a notification about a sudden cardiac arrest case comes in what do you do, …
I noticed I haven’t published the actual SUS score of the paper prototype, it was 85 percent. Which is a good score, you need a score of 68 to be average so 85 is well above average. I know it might not be the fanciest of designs but it seems to work intuitively and that’s the main goal here! With the digital prototype the scores was slightly better with a score of 87,5 percent. This is likely dough to the fact they could actually press buttons and that my drawing skills aren’t that great!
The idea was that I would finish the GUI design before the exams, unfortunately due to many other deadlines I didn’t quite finish it. Now I have finished it, I also examined it with test subjects. But I didn’t get much more feedback then last time. I wanted to test on my iPad, instead of the simulator, but due to a glitch I wasn’t able to. This will be fixed next week during my meeting with my advisor. I am also looking into JSON now, I hope before the meeting I will have successfully pull data from the REST server. I have some example code, and I also want to work with synchronized objects. But that part I have still to figure out how that exactly works. But normally this should be dealt with before the meeting on Thursday. After that we can hopefully start with the important stuff.
The things that yet have to be done:
-Testing the application in the field: Does it all work (does the GPS move with my position)
-Pushing messages to the devices
-Updating users GPS location
-Decision system, who will get a notification
-Making the application run in the background, making sure iOS doesn’t shutdown the application
Below you will find the screenshot of the direction text view. The results of the GUI testing will follow.