我们的 Flutter 应用程序使用 Google 地图(如果可用)或使用本地浏览器显示多个位置。
虽然我们之前已经为 iOS 上传了一个被苹果接受并成功发布在 App Store 的二进制代码,但现在我们添加了更多位置并因此尝试发布新版本,苹果拒绝了我们的二进制文件,并表示它必须使用“Apple Maps”而不是任何以“G”开头的东西,比如谷歌......
拒绝消息如下:
您的应用程序的位置功能未与内置地图功能集成,这会将用户限制为第三方地图应用程序。
下一步
要解决此问题,请修改您的应用程序,让用户可以选择启动本机 Apple Maps 应用程序。
我发现存在一些关于名为MapKit JS的 Javascript 库的文档,它正好用于与Apple Maps交互的目的:https : //developer.apple.com/maps/mapkitjs/
<script src="https://cdn.apple-mapkit.com/mk/5.x.x/mapkit.js"></script>
<script>
mapkit.init({
authorizationCallback: function(done) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/services/jwt");
xhr.addEventListener("load", function() {
done(this.responseText);
});
xhr.send();
}
});
var Cupertino = new mapkit.CoordinateRegion(
new mapkit.Coordinate(37.3316850890998, -122.030067374026),
new mapkit.CoordinateSpan(0.167647972, 0.354985255)
);
var map = new mapkit.Map("map");
map.region = …Run Code Online (Sandbox Code Playgroud) 在更新到MacOS 10.15 Catalina之后,Flutter出现了问题。
具体来说,Flutter医生抱怨以下方面:
下载的可执行文件无法在主机上执行。
未安装CocoaPods。
重要的是要解释一下,在更新之前,当我的计算机运行Mojave 10.14时,Flutter的这些问题不存在,因此flutter doctor -v报告没有任何问题。
关于第一个问题:下载的可执行文件无法在主机上执行。
Flutter医生提供了此链接:https : //github.com/flutter/flutter/issues/6207
不过,链接的文章是指Linux而不是MacOS ...
关于第二个问题:未安装CocoaPods。
Flutter医生提出以下解决方案:
酿造安装cocoapods
吊舱设置
但是,尽管“ install cocoapods”工作正常,但“ pod setup”失败,指示以下错误:
/usr/local/bin/pod: /usr/local/Cellar/cocoapods/1.7.4/libexec/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/pod: line 2: /usr/local/Cellar/cocoapods/1.7.4/libexec/bin/pod: Undefined error: 0
Run Code Online (Sandbox Code Playgroud)
运行flutter doctor -v可得到以下结果:
[!] Flutter (Channel dev, v1.8.1, on Mac OS X 10.15 19A501i, locale es-PA) …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照步骤将 Firebase 连接到 Flutter 生成的 iOS 应用程序。
在最后一步中,当将FirebaseApp.configure()行添加到 AppDelegate.swift 文件中时,应用程序构建正常,但在执行时崩溃,指示线程 1 上的信号中止... 线程 1:信号 SIGABRT
AppDelegate.swift中的代码如下:
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
FirebaseApp.configure()
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
};
}
Run Code Online (Sandbox Code Playgroud)
Xcode 提供的完整错误日志如下:
2019-11-18 07:11:34.664822-0500 Runner[82048:876634] - <AppMeasurement>[I-ACS036002] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen …Run Code Online (Sandbox Code Playgroud)