mapseed/platform

Android and iOS app editions

Closed this issue · 16 comments

People keep asking about a mobile app.

Some ideas

  • Water Reporter - (Website, Github, API) - use a custom version of their app or integrate with their API
  • Ionic hybrid app
  • Native app with webview
  • ODK based app (GeoODK) (read more about the Open Data Kit (ODK) ecosystem here
  • NextGIS Mobile - "open-source mobile GIS for Android which allows to create, edit and export geodata both online and offline."
  • FulcrumApp - Pay a monthly fee and use their workflow
  • iNaturalist - (Web, Github, API)
  • FracTracker (?)

I think Ionic would probably be a bad choice because it's a bit bulky and will still require a lot of custom code to build.

After talking with Adrian today, developing a native app via a webview of our web app seems to be the best option.

We would still need to create a native shell to house the webview display. I think a hybrid framework would be easier to build that shell (Ionic has a GUI tool that may work, though there are others too) rather than build using iOS/Android SDK process.

zmbc commented

I think what you're looking for is Cordova, which is an open-source framework that wraps a webview into a native app. It's used by Ionic under the covers.

I watched a couple of videos about Cordova the other day, and it seems pretty neat. You can build native applications for ios, android, and windows phone from the same webapp code base. Apparently it also provides a javascript api for accessing devices like the camera and accelerometer, and must do all the device-specific work behind the scenes.

I agree this seems like a good option for building native mobile versions of the app...are there any major drawbacks to going down this road?

zmbc commented

@goldpbear The main drawback is performance: the apps would only perform slightly better than the website does on mobile, whereas a native implementation would handle all the display logic in lower-level, optimized code. But if we want a web-shell style app, I'm pretty sure Cordova is the best tool out there.

@zmbc ah, that makes sense. I guess on the one hand we don't want to add more performance bottlenecks if we can avoid it, but on the other a web view mobile solution does seem like the most accessible.

zmbc commented

Realistically, we're probably not going to be able to make 2-3 completely separate apps for the different platforms. So there's basically two ways to go:

  • A wrapped webapp using something like Cordova
  • A truly-native app made using a cross-platform framework

Wrapped webapps are tried and true. Cordova has been around for a while and it's been used to do all sorts of things.
The other option entails using something like NativeScript or React Native. These are extremely cool but it's still early days. If we went with this option, I would not be surprised if we found ourselves doing things that had never been done in those frameworks. Also, this option would be far more work, because with a hybrid app we can use a lot of code that's already been written.

@PFeinson what do you think?

@futuresoup I think the best course of action here would be what Luke proposed back in May; develop a native shell to house the webview display. I can help with the android side of it, but I'm extremely unfamiliar with ios development, so I can't be of much assistance there.

It wouldn't be much more efficient to use web view, but if the priority is getting something into the store that we can update later, it would be a working, temporary solution. Thoughts?

zmbc commented

@PFeinson so you're suggesting a hybrid app where some parts are developed in Swift/Java? Which parts were you planning to do that way, and which parts with cross-platform Javascript?

General Update
I did manage to put together a webview app over the weekend. Will upload the .apk. (attached) It isn't finished yet (user experience) but will provide a sample to see if this is a route worth pursuing. The only slow aspect that I've noticed is when loading the map (which is an existing problem).
HeyDuwamishDemo.zip
Feed back appreciated so I know if I should proceed or not. If this works well enough, I can implement options for Hey Willamette and any other sister sites that we have fairly easily.

@zmbc: I was thinking we could phase it towards native over time. I'm not extremely educated on Django or javascript, so I'm not entirely sure that would be possible. If it is, great, I can start transferring components to native and slowly move towards an all native app, piece by piece. If it isn't, run with the webview as a compromise and work on a entirely native app.

zmbc commented

@PFeinson: cool! Did you use Cordova?

@zmbc No, this is written in java with a webview object. I can upload the source if you're interested in what's going on under the hood? I was planning on uploading the entire source once it was finished, but I can upload this version if you'd like.

zmbc commented

@PFeinson Ah, very cool. Can I see the app without having an Android phone myself?

@zmbc The best option for that would be an android emulator. Android Studio includes a great client for setting them up, but there's also a list of viable options that can be found here: http://www.androidauthority.com/best-android-emulators-for-pc-655308/

@zmbc @PFeinson You should try Remix http://www.jide.com/remixos if you
don't have an Android device

On Thu, Sep 22, 2016 at 10:40 AM, PFeinson notifications@github.com wrote:

@zmbc https://github.com/zmbc The best option for that would be an
android emulator. Android Studio includes a great client for setting them
up, but there's also a list of viable options that can be found here:
http://www.androidauthority.com/best-android-emulators-for-pc-655308/


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#198 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEReRYmTRAyToEia1bi_14Y3lvGLNnRkks5qsr2MgaJpZM4Gplsj
.