微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mac Catalyst 应用程序能否管理不同的 iOS Firestore 数据库?如果是这样如何配置它

如何解决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。

XCode settings

3.从项目的命令行做通常的初始化一个pod项目。

pod init
  1. 将 podfile 编辑为如下所示:

enter image description here

  1. 运行 pod 安装: enter image description here

  2. 在 XCode 中打开 xcworkspace,并在“我的 Mac”上运行以测试这些库的构建。

  3. 现在将目标 firebase 安装中的“GoogleService-Info.plist”复制到项目中。它应该看起来像这样:

enter image description here

事实证明,您可以在此处换入出任何 Google-Service-Info 文件以指向任何 Firebase 数据库。

  1. 构建应用。会报错:

签署“gRPC-C++-gRPCCertificates-Cpp”需要一个开发团队。在 Signing & Capabilities 编辑器中选择一个开发团队。

  1. 因此,在 XCode 中突出显示 PODS 文件夹,如下所示:并设置团队。

enter image description here

  1. 现在向 AppDelegate 添加一些 swift 代码 FirebaseApp.configure:

enter image description here

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")
    }
}

}

运行时会报错:

访问钥匙串时出错。

  1. 要修复,只需转到 XCode 项目/签名和功能/并添加“钥匙串共享”。

再次运行,它应该可以与显示类似内容的日志一起工作:

gvMPr3Z7Aoh6tOA4lo1S3r9abcde

这是匿名用户ID。如果您转到 Firebase 控制台身份验证部分,则会出现此 uid。所有 firestore 命令现在都可以使用了。还有最后一步,因为如果我们尝试存档它会失败。

  1. 归档出现错误:

    ssl_transport_security.h:29:12: 在框架“openssl_grpc”中没有找到头文件“x509.h”

为了解决这个问题,我们使用了 zummenix 在 github 上给出的众所周知的答案:zummenix answer github link

此处给出了步骤:

  1. 创建一个 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
    
  2. 使用以下命令运行此文件:

    ./runBoringSSLPatch.sh

  3. 再次存档 - 它应该可以工作。现在“分发应用程序”、开发人员 ID、导出。然后将该文件夹发送给另一个用户。

  4. CTRL-C runBoringSSLPatch 程序。

谢谢

约翰·古斯塔特

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。