From e5d4daa0e3ba4bd7a0a92909c46b407368914d3a Mon Sep 17 00:00:00 2001 From: Nathan Hamblen Date: Wed, 27 Jan 2021 19:16:37 -0500 Subject: [PATCH 1/2] Update to Mapbox-iOS-SDK 6.3.0 The 6.0.0 upgrade had no breaking changes: > This major release does not include any breaking changes to public > APIs. We are treating this release as a SEMVER major change because > our installation instructions have changed. https://github.com/mapbox/mapbox-gl-native-ios/releases/tag/ios-v6.0.0 I did however need to cast the `accessToken` as a `String` to satisfy the compiler after this upgrade. Prior to the upgrade I was seeing crashes from this bug, which was fixed in 6.2: https://github.com/mapbox/mapbox-gl-native-ios/issues/485 So far I don't see any issues at all after the upgrade. Developers will need to configure their access token in order to fetch the mapbox sdk for this an future versions, described here: https://docs.mapbox.com/ios/maps/guides/install/ --- README.md | 14 +++++++++++++- ios/Classes/MapboxMapController.swift | 2 +- ios/mapbox_gl.podspec | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fcb6b2594..67a8dff7a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ This Flutter plugin allows to show embedded interactive and customizable vector - Install [Flutter](https://flutter.io/get-started/) and validate its installation with `flutter doctor` - Clone the repository with `git clone git@github.com:tobrun/flutter-mapbox-gl.git` -- Add a Mapbox access token to the example app (see next section) +- Add a public Mapbox access token to the example app (see next section) +- Add a secret Mapbox access token for downloading the SDK - Connect a mobile device or start an emulator, simulator or chrome - Locate the id of a the device with `flutter devices` - Run the app with `cd flutter_mapbox/example && flutter packages get && flutter run -d {device_id}` @@ -25,6 +26,17 @@ The **recommended** way to provide your access token is through the `MapboxMap` An alternative method to provide access tokens that was required until the v0.7 release is described in [this wiki article](https://github.com/tobrun/flutter-mapbox-gl/wiki/Mapbox-access-tokens). +### SDK Download token + +You must also [configure a secret access token having the Download: read +scope][https://docs.mapbox.com/ios/maps/guides/install/]. If this configuration +is not present, an error like the following appears during the iOS build. + +``` +[!] Error installing Mapbox-iOS-SDK +curl: (22) The requested URL returned error: 401 Unauthorized +``` + ## Avoid Android UnsatisfiedLinkError Update buildTypes in `android\app\build.gradle` diff --git a/ios/Classes/MapboxMapController.swift b/ios/Classes/MapboxMapController.swift index a8ab9c68a..4f31b6d5c 100644 --- a/ios/Classes/MapboxMapController.swift +++ b/ios/Classes/MapboxMapController.swift @@ -28,7 +28,7 @@ class MapboxMapController: NSObject, FlutterPlatformView, MGLMapViewDelegate, Ma init(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?, registrar: FlutterPluginRegistrar) { if let args = args as? [String: Any] { - if let token = args["accessToken"] as? NSString{ + if let token = args["accessToken"] as? String { MGLAccountManager.accessToken = token } } diff --git a/ios/mapbox_gl.podspec b/ios/mapbox_gl.podspec index e724bedf4..c4f46d333 100644 --- a/ios/mapbox_gl.podspec +++ b/ios/mapbox_gl.podspec @@ -16,7 +16,7 @@ A new Flutter plugin. s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.dependency 'MapboxAnnotationExtension', '~> 0.0.1-beta.1' - s.dependency 'Mapbox-iOS-SDK', '~> 5.6.0' + s.dependency 'Mapbox-iOS-SDK', '~> 6.3.0' s.swift_version = '4.2' s.ios.deployment_target = '9.0' end From b4441dd539e818fe65837851b4b452e6b32869ac Mon Sep 17 00:00:00 2001 From: Nathan Hamblen Date: Wed, 31 Mar 2021 20:45:42 -0400 Subject: [PATCH 2/2] Setup .netrc for iOS mapbox sdk download Writes a `~/.netrc` file containing the credentials needed to download the iOS mapbox sdk. I'm not experienced with github workflow so I'm just hoping that I can write to the home directory of whatever container it runs in. This should allow curl to find and use the given credentials. --- .github/workflows/flutter_ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/flutter_ci.yml b/.github/workflows/flutter_ci.yml index ef674f5c5..159543284 100644 --- a/.github/workflows/flutter_ci.yml +++ b/.github/workflows/flutter_ci.yml @@ -33,6 +33,7 @@ jobs: # We might want to add a flutter test step in the future, when there actually are tests for this plugin build-iOS: + environment: IOS_CI_DOWNLOADS_TOKEN name: Build iOS package runs-on: macos-latest @@ -45,8 +46,13 @@ jobs: - run: flutter pub get - name: build iOS package run: | + echo "machine api.mapbox.com + login mapbox + password $SDK_REGISTRY_TOKEN" >> ~/.netrc cd ./example flutter build ios --release --no-codesign + env: + SDK_REGISTRY_TOKEN: ${{ secrets.SDK_REGISTRY_IOS}} build-web: name: "Build web"