Closed rkurian closed 9 years ago
Sorry, I have not done any IOS development so have not encountered this problem. Can anyone else help?
Thanks!
On 5/22/2014 12:14 PM, rkurian wrote:
Hello, I work for Skyline Software, makers of the TerraExplorer 3D Client. We are interested in implementing the GeoPackage standard for our mobile app development, but have run into a few questions. The iOS environment is very touchy about security, preferring to generally keep the different applications separate. Is there any plan or thought right now to how applications will manage to share the GeoPackage data? Any particular technique that is being considered at all (even at this early stage)?
We have pretty much the same question for Android devices, although there the security is more lenient. Since we are actively working towards a release, of course we'd love to be able to have our software be good members of the community in terms of common behavior for the user.
Thanks!
— Reply to this email directly or view it on GitHub https://github.com/opengis/geopackage/issues/75.
Paul W. Daisey, Jr.
Image Matters LLC
201 Loudoun Street SW
Leesburg, VA 20175
Phone 703-669-5510
Fax 703-669-5515
Cell 301-651-7148
pauld@imagemattersllc.com <mailto://pauld@imagemattersllc.com>
Me neither. As far as I can tell sharing geopackages between apps on iOS is just not going to be feasible. The workarounds you can find online for data sharing are only practical for relatively small files and make copies of the data.
On Android there are a couple of options. Either you put the files in a shared location (e.g. /sdcard) and then every application can access the files directly. If you want to keep the physical file private to a specific app but still share the data then this can be done using a ContentProvider implementation.
rkurian,
your needs would be to have a common GeoPackage container, with tables that would be private to some applications ? AFAIK the open-source implementation of sqlite has no such mechanism. There's a proprietary encryption extension licenced by the sqlite author(s), http://www.sqlite.org/see/doc/trunk/www/index.wiki, that might perhaps address that need. But my understanding of the doc is that the encryption/authentication scope is still the whole DB, so I'm afraid there's no easy solution. Unless you develop your own encryption layer above sqlite, but you would likely lose all benefits of using a SQL capable container...
Even
Sorry, I have not done any IOS development so have not encountered this problem. Can anyone else help?
Thanks!
On 5/22/2014 12:14 PM, rkurian wrote:
Hello, I work for Skyline Software, makers of the TerraExplorer 3D Client. We are interested in implementing the GeoPackage standard for our mobile app development, but have run into a few questions. The iOS environment is very touchy about security, preferring to generally keep the different applications separate. Is there any plan or thought right now to how applications will manage to share the GeoPackage data? Any particular technique that is being considered at all (even at this early stage)?
We have pretty much the same question for Android devices, although there the security is more lenient. Since we are actively working towards a release, of course we'd love to be able to have our software be good members of the community in terms of common behavior for the user.
Thanks!
— Reply to this email directly or view it on GitHub https://github.com/opengis/geopackage/issues/75.
Geospatial professional services http://even.rouault.free.fr/services.html
Thanks for the responses. Just to clarify, our interest is to just make sure that our client will be a good member of the "GeoPackage Application Ecosystem" on these devices. So if you have 5 applications who all are going to be able to read GeoPackages, I guess the question is, how do all 5 applications provide some kind of consistency in the way they access the data, so that the user finds it very simple and easy to use? Said another way, how do we make the process of sharing (and discovering) GeoPackages across applications work as easily as possible?
On Android, as Pepjin pointed out, there are a couple of different options. With some of the newer updates, Android also has some interesting security constraints, but not to the same degree that iOS has. There could be a nice solution using ContentProvider. I was curious to know if there was any early beginning to a methodology or best practice, but it sounds like the answer is "not yet."
On the IPhone, the security issues of the device seem like they will cause a lot of problems for this concept. Inherently, the device does not want applications to share data except in very narrowly defined ways. So, it sounds like (from the replies here, and from what we've seen as well) this device will not have a very streamlined use case, or at least if this environment is an important target, it needs more thought due to the sandboxed nature of the applications.
On Android we are looking at several options ranging from just storing it on the SDCard to writing custom apps like NGAs MapCache app (referenced here http://gcn.com/articles/2014/05/19/geoint-when-disconnected.aspx?admgarea=TC_Mobile) to share the data. There is also potential discussion of open sourcing some Android libraries for reading a GeoPackage from the SDCard on Android. We are also exploring the potential of tools like GeoDroid to solve this problem: https://github.com/boundlessgeo/geodroid
All that said the answer is still gray and there may not be just one answer in the end, sorry I don't have anything more clear.
iOS is even more complicated. It seems you are fully aware of how the security on iOS will limit our options on that platform. We are trying to be creative and have been playing with some pretty outside the box solutions like an app that would share GeoPackage data via the pasteboard. In preliminary tests it is feasible, but we are skeptical as to whether it can scale. We of course also have our fingers crossed that rumors of increased ability to share between apps will be realized in future releases of iOS, obviously no control over this. Currently, we are unfortunately just writing iOS apps that keep their own local data stores and don't share data between apps much.
All that said I think the iOS question is probably worth a community of it's own of like minded folks working together to search for a potential solution that could work on this platform.
Thanks for chiming in Ben. I think for now until we (as a group or community) decide on a common direction, the next release of our app (on Android at least) will probably allow for some browsing on the SDCard most likely. That sounds like the best option there (in terms of GeoPackage discovery), at least right now.
As for iOS, as you mentioned here, it does seem like iOS 8 is going to allow for cross-app data sharing, so that will probably be the right avenue to explore in the future (although, again, there may be a need for some kind of best practice in terms of data discovery; admittedly, though, I haven't looked in great detail yet at the available APIs). Since our release is likely too soon to incorporate this new feature, we'll have to explore some other options. As you said, it's a big problem seemingly with no really straightforward solution if it's deemed necessary to support for older devices.
Thanks for sharing your experience implementing for this feature across the two OSes.
One suggestion is to implement a server running locally on the device. The server connects to the file and other applications connect to the server. This pattern is commonly used in iOS development.
At the 3/31/15 SWG meeting we agreed to close this issue as it is more to do with application architecture than the GeoPackage standard itself.
Hello, I work for Skyline Software, makers of the TerraExplorer 3D Client. We are interested in implementing the GeoPackage standard for our mobile app development, but have run into a few questions. The iOS environment is very touchy about security, preferring to generally keep the different applications separate. Is there any plan or thought right now to how applications will manage to share the GeoPackage data? Any particular technique that is being considered at all (even at this early stage)?
We have pretty much the same question for Android devices, although there the security is more lenient. Since we are actively working towards a release, of course we'd love to be able to have our software be good members of the community in terms of common behavior for the user.
Thanks!