Ushahidi iOS SDK
I am proud to announce a new major release of the Ushahidi iOS app, a complete rebuild with a number of significant improvements and a load of new features!
The new version has been submitted to the App Store, and just waiting for the Apple approval process before it is available for download. In the meantime, you can pull the latest code at github.com/ushahidi/Ushahidi_iPhone/
All the data storage, synchronization and base classes are now packaged in a standalone framework (Ushahidi.framework) and resource bundle (Ushahidi.bundle). The Ushahidi app uses this framework, but it also opens the possibility for other developers to build their own custom apps on top of this SDK.
Whitelabel support is back however the property keys in the theme’s info.plist have been renamed to include USH prefix to avoid name collisions. You can also optionally include multiple maps in your whitelabel app, which might be useful for an organization that has multiple deployments. Checkout the README.markdown for full details on how to whitelabel the app.
When I first started building the iOS app, Core Data was not supported on the iOS platform. As a result, the previous version relied heavily on archiving and unarchiving on objects to disk for storage. The good news is the new version now has Core Data support built directly into the Ushahidi SDK.
The new version is significantly faster than the previous version, thanks again to Core Data. Besides having the unarchive objects from disk, the previous also had to archive objects back to disk after changes were made, this is no longer needed.
New version now allows synchronization of multiple maps simultaneously, thanks to the Core Data support and some creative use of NSOperationQueues.
Pull Down To Refresh
The map list and report list now have a pull down to refresh control. These tables use the native UIRefreshControl when running iOS 6, and elegantly fallback to using the CKRefreshControl to provide backward compatibility on iOS 5.
There are now multiple ways to share reports including to Twitter and Facebook, via SMS and Email, and also as a QR Code. The new version takes advantage of the native Twitter integration as well as new Facebook SDK but gracefully downgrades to a custom modal sharing popup when not available.
Besides sharing, the new version can also send report details and photos directly to a printer, which can be useful for deployment management teams.
Direct video upload to YouTube is now built in, thanks to the great code that Orta wrote for the Mapping Mangroves map, but now has offline support so videos can be captured even when the internet is not present, and uploaded later during synchronization.
Any report videos with YouTube links are now rendered inline, making it easy to watch inside the table or view in full screen mode.
The map for selecting a new location has been improved including ability to searching by street address, find current location as well as double tap to move the map pin.
The app now supports Open GeoSMS thanks to help from Slayer and his team. When enabled in the Settings, the app gives the user the option Upload via Ushahidi API or Send via Open GeoSMS. This will be an incredibly important feature when collecting reports when the internet is not available, for example during a disaster situation.
Full Screen Mode
The Settings screen has option to hide the status bar, taking advantage of the full screen height.
When running the app on an iPad, the sidebar can easily be hidden in landscape mode, making full use of the screen width.
All the table cells have been revamped, including less text and making better use of icons to identify the types of data. This is important considering the app will translated in a number of different languages.
Reports can now be starred when viewing their details, adding a star icon on that report in the list.
The report list now shows a + icon in top right for new reports, which disappears when that report is viewed.
Download Static Maps
Once again the Settings has the option to download a static map image from Google Maps for every report, making this map tile visible even when the internet is not available.
The new version supports viewing of comments, as well as submitting new comments to reports.
Submit Only Mode
The ability to skip the report list and map and only show the submit report form can now be enabled by changing a single property in the theme’s info.plist. This was a feature request from the TELL MAMA team, happy to include it in this new version.
Although this new release has a lot of new features, it’s also missing a few things. One, Checkins have not been fully implemented and two, stale reports are not being removed. Hopefully both of these issues will be fixed in the next minor release.
Just for safe measures, the previous project for Ushahidi iOS 2.X can be found in the Old folder on GitHub.
Thanks to our incredible community especially Chris Moya, Mercy Deche, Phelipe de Sterlich, Kuo-Yu slayer Chuang, Alexey Poimtsev, Johannes Lindenbaum, Yoshi Suzuki and Delalorm S Semabia for helping translate the new version fully into Akan, Italian, Japanese, Russian, Spanish and Swahili, and partially into German, Chinese (Taiwan) and Catalan. Translations are now on Transifex so it should be easier for others to contribute. If you are a multilingual speaking person, we’d love to have your help!
The new version has been a long time coming, so glad to finally have the code on GitHub and hopefully available soon for download on the App Store. Feedback is always welcome, please report any issues to GitHub or message me on Twitter.