Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add iOS as a supported platform #169

Draft
wants to merge 32 commits into
base: main
Choose a base branch
from
Draft

feat: add iOS as a supported platform #169

wants to merge 32 commits into from

Conversation

josxha
Copy link
Owner

@josxha josxha commented Dec 7, 2024

Check the tasklist of the issue to follow the current progress.

Warning

The iOS implementation is during the funding phase provided under
the Non-Profit Open Software License version 3.0 (NPOSL-3.0).
After funding is completed, it will get released under the permissive 3-Clause BSD License.

@josxha josxha added the ios iOS specific issue label Dec 7, 2024
@josxha josxha added this to the iOS milestone Dec 7, 2024
@josxha josxha self-assigned this Dec 7, 2024
Copy link

cloudflare-workers-and-pages bot commented Dec 7, 2024

Deploying flutter-maplibre with  Cloudflare Pages  Cloudflare Pages

Latest commit: a3c39a3
Status: ✅  Deploy successful!
Preview URL: https://55ec90b5.flutter-maplibre.pages.dev
Branch Preview URL: https://ios.flutter-maplibre.pages.dev

View logs

…#172)

## Description
Just as on Android, a `MapLibreRegistry` class gets used to access the
MLNMapView instance from inside dart. Programmatic control is handled
using pigeon method channels and objective c ffi.
Applying paint and layout properties is not part of this pull request.

The Swift header file is generated with 
```bash
cd maplibre_ios/ios/maplibre_ios/Sources/maplibre_ios/
swiftc -c MapLibreRegistry.swift -module-name maplibre_ios -emit-objc-header-path MapLibreRegistry.h -emit-library -o libmaplibreios.dylib
```

## Resources
- https://dart.dev/interop/objective-c-interop
@birkskyum
Copy link

@josxha , can you elaborate a bit on this warning? What is this "funding phase"?

@josxha
Copy link
Owner Author

josxha commented Jan 19, 2025

Yes of course, @birkskyum. iOS support is currently the most requested feature and the biggest blockers of using this package.
As I want to offer support for web, android and ios, I'll happily add support for iOS. Though, this required me to purchase new up-to-date apple hardware. To guarantee the ability for long term maintainence, I went for an mac mini m4 with magic keyboard. I'd like to add an ipad to the list to test on an physical device when the implementation is about to be finished (in total ~ 1.330€ or 1.367$).

I donate my time and effort to open source, but am not able to carry these costs for an open source project. Even though, I pre-funded the hardware and started implementation so that sponsors have a decent guarantee of delivery. The only use those devices had since I bought them is the development of the maplibre flutter package - so there is really no dual use here. 😄

The idea is to do a crowd-funding campain so that multiple parties can fund this feature together. There has been some interest in sponsoring, for example in #111 (comment).
I want to wait until February when I have more time to annouce the campain and (hopefully) finish the implementation.

In the meantime, the iOS implementation gets published in this pull request under the OSI approved "The Open Software License 3.0". This allows commercial interested parties to follow along its progress and non profit projects to already get their hands on early.
As soon as the hardware costs are funded, iOS support gets released under the permissive BSD-3-Clause license that allows commercial use as it is not in my interest to maintain two variants of the package.

I really do hope that this is in the interest of everyone and I am open for any feedback or suggestions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ios iOS specific issue
Projects
Status: In Progress
2 participants