mcliquid
(mcliquid)
September 12, 2023, 3:32pm
11
Es gibt hier noch ein paar weitere Apps, aber an StreetComplete kommt auf iOS-Basis bisher nichts dran: Comparison of iOS applications - OpenStreetMap Wiki
Eine ähnliche, weniger umfangreiche Liste gibt es auch hier: iOS - OpenStreetMap Wiki
Es gibt schon seit ein paar Jahren Pläne, StreetComplete auf iOS zu portieren. Dies scheitert jedoch bisher an den notwendigen Ressourcen, siehe auch:
opened 12:07PM - 11 Jun 20 UTC
help wanted
### Edit: see [this comment](https://github.com/streetcomplete/StreetComplete/is… sues/1892#issuecomment-1671074967) for the current state of affairs
---
Quite a few times, it has been requested that an iOS version of this app is made available. This ticket shall serve as an explanation why this isn't possible but also as an entry point for why it is perhaps possible after all, but with enormous effort. So if you are an iOS developer and interested in creating an iOS version, also read this.
## It's not possible
StreetComplete is developed as a native Android app and iOS is a completely different platform. There is no compatibility at all. Usually, if you see an app that is both available for Android and iOS, it is either not native (for example, just a website being displayed within an app or using a cross-platform framework such as ReactNative) or you are looking at two completely different applications, likely developed by two teams. This is my experience as a professional app developer.
## Maybe it's possible
So, this is interesting if you are an iOS developer yourself. It is not planned from my side to do this.
### Kotlin Multiplatform Mobile
This app is written in Kotlin, a modern programming language that is quite similar to Swift. Originally, Kotlin was built to run on the JVM, but by now, it can be transpiled into JavaScript, and with Kotlin Native, also to machine code, just like Swift.
This makes it possible to write iOS apps with Kotlin. Thus, Kotlin code of this project that is not dependent on any Java library (Http library etc) and also not dependent on the Android platform (UI, sensors, persistance management etc) could be used 1:1 in an iOS port of this app.
Such "pure" Kotlin code would be put into a common module that is shared between the iOS and the Android app.
However, not a big percentage of the total code in this project is such pure Kotlin code that has no dependencies to any other Java or Android dependencies. Most of the iOS app would still need to be written from scratch, in Swift or better in Kotlin, if possible. On the other hand, some of the code that is currently dependent on some Java library or Android dependency could be changed to not be dependent on it directly anymore but on a wrapper interface. Then, only that wrapper would need to also be implemented for iOS.
<strike>
### Multi-OS Engine
The MOE is a little different approach. So, the JVM of Android is called ART and is open source. On Android, we write apps that run within this virtual machine provided by the Android system. For iOS, there is no such virtual machine, apps run natively. But, what we could do, is to write an app that comes bundled with the ART virtual machine and does nothing else than to load the provided JVM bytecode. This is the approach of MOE.
In other words, ART is automatically bundled in the app so that one can write an iOS app in the Java environment, making use of the Java ecosystem and libraries. iOS platform dependencies are accessed over an interface provided by MOE.
The difference to the Kotlin Native approach is, that Kotlin code that depends on Java libraries can also be moved to the common module that is shared between the iOS and the Android app. The only things that cannot be shared is code that is dependent on the Android platform, such as UI or currently persistance with SQLite (because it uses Android dependencies)</strike>.
(see https://github.com/streetcomplete/StreetComplete/issues/1892#issuecomment-1042296087)
Auch zu erwähnen ist ein ganz neuer iOS-Editor, welcher bisher keinen Namen hat: New build of the editor for iOS + help me come up with a name
Aber um deine ursprüngliche Frage zu beantworten: Nein, es gibt leider keine anderen Empfehlungen für iOS-Nutzende, welche ähnlich wie StreetComplete sind. Aus meiner Sicht kommt EveryDoor dem ganzen am nächsten, auch wenn die Einstiegsbarriere dort größer ist.
Ich empfehle dann meistens auch Dienste wie Mapillary , KartaView oder Mapilio . Alle drei Dienste ermöglichen es mittels dem Smartphone (oder Actionscams wie GoPro) Aufnahmen wie Google’s StreetView anzufertigen. Die drei Dienste sind dabei relativ ähnlich wobei Mapillary zumindest in meiner Umgebung die beste Abdeckung hat.
Damit lässt sich ebenfalls sehr gut zu OpenStreetMap beitragen, wenn auch indirekt.
3 Likes