如何解决Mac Catalyst 应用程序能否管理不同的 iOS Firestore 数据库?如果是这样如何配置它
如何将 Mac Catalyst 应用指向另一个 firestore 区域,以便 2 个编辑器用户可以轻松地从他们的笔记本电脑管理他们的数据?
背景:我有一个使用 Google Firestore 数据库的功能齐全的 iOS 应用程序。有几个用户是编辑器,但目前必须选择图像和 mp3,然后在手机上以编辑器模式从应用程序上传这些文件。这不是很有效。
问题:我发现在让 iOS/iPad 代码和 firebase 协同工作时,有很多 Mac Catalyst 堆栈溢出问题。 Google 的 Firebase 尚不支持 Mac Catalyst。
谢谢
解决方法
已修复
我有一组步骤可以解决创建 Mac 应用程序以编辑另一个 firebase 数据库的问题。最后,您可以将应用压缩并发送给另一个 Mac 用户运行。
1.创建一个新的 XCode 项目 - 此处称为 tryMacCatalyst。
2.勾选 Mac 框并点击出现的启用按钮。然后在Mac上运行确认。然后关闭项目以添加 PODS。
3.从项目的命令行做通常的初始化一个pod项目。
pod init
- 将 podfile 编辑为如下所示:
-
在 XCode 中打开 xcworkspace,并在“我的 Mac”上运行以测试这些库的构建。
-
现在将目标 firebase 安装中的“GoogleService-Info.plist”复制到项目中。它应该看起来像这样:
事实证明,您可以在此处换入出任何 Google-Service-Info 文件以指向任何 Firebase 数据库。
- 构建应用。会报错:
签署“gRPC-C++-gRPCCertificates-Cpp”需要一个开发团队。在 Signing & Capabilities 编辑器中选择一个开发团队。
- 因此,在 XCode 中突出显示 PODS 文件夹,如下所示:并设置团队。
- 现在向 AppDelegate 添加一些 swift 代码 FirebaseApp.configure:
11.将代码添加到 ViewController 以测试连接:运行,您应该在日志中看到“firebase auth checked - no user””
import FirebaseAuth
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if Auth.auth().currentUser == nil {
print("firebase auth checked - no user")
}else{
print("firebase auth checked - we have a user")
}
}
}
12.向 ViewController 添加代码以测试与 Firebase Auth 的连接:
import FirebaseAuth
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if Auth.auth().currentUser == nil {
print("firebase auth checked - no user")
Auth.auth().signInAnonymously { (authResult,err) in
if let err = err {
print("Cannot login in anon - something bad happened ")
print(err)
}else{
if let user = authResult?.user {
print(user.uid)
}
}
}
}else{
print("firebase auth checked - we have a user")
}
}
}
运行时会报错:
访问钥匙串时出错。
- 要修复,只需转到 XCode 项目/签名和功能/并添加“钥匙串共享”。
再次运行,它应该可以与显示类似内容的日志一起工作:
gvMPr3Z7Aoh6tOA4lo1S3r9abcde
这是匿名用户ID。如果您转到 Firebase 控制台身份验证部分,则会出现此 uid。所有 firestore 命令现在都可以使用了。还有最后一步,因为如果我们尝试存档它会失败。
-
归档出现错误:
ssl_transport_security.h:29:12: 在框架“openssl_grpc”中没有找到头文件“x509.h”
为了解决这个问题,我们使用了 zummenix 在 github 上给出的众所周知的答案:zummenix answer github link
此处给出了步骤:
-
创建一个 mac sh 文件“runBORINGSSLPatch.sh”并使用以下内容(更改
和 ): # This works # CD to <PROJECT_NAME> folder # 1. run using command line # ./runBoringSSLPatch.sh # 2. then do archive - distribute directly to customers - Export # 3. Ctrl/C to stopscript # # script is at: # https://github.com/grpc/grpc/issues/20500 while true; do sleep 0.1 _boring_ssl=$(find /Users/<YOUR_MAC_LOGON_NAME>/Library/Developer/Xcode/DerivedData/<PROJECT_NAME>* \ -name "BoringSSL-GRPC" | head -n1) cd "$_boring_ssl/openssl_grpc.framework" && ln -s Versions/Current/Headers Headers && echo "Patched openssl_grpc" _grpc_core=$(find /Users/<YOUR_MAC_LOGON_NAME>/Library/Developer/Xcode/DerivedData/<PROJECT_NAME>* \ -name "gRPC-Core" | head -n1) cd "$_grpc_core/grpc.framework" && ln -s Versions/Current/Headers Headers && echo "Patched grpc" done
-
使用以下命令运行此文件:
./runBoringSSLPatch.sh
-
再次存档 - 它应该可以工作。现在“分发应用程序”、开发人员 ID、导出。然后将该文件夹发送给另一个用户。
-
CTRL-C runBoringSSLPatch 程序。
谢谢
约翰·古斯塔特
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。