提问者:小点点

Mac Catalyst应用程序可以管理不同的iOS firestore数据库吗?如果是,如何配置


我如何将Mac Catalyst应用程序指向另一个firestore区域,以便2编辑器用户可以轻松地管理他们的笔记本电脑中的数据?

背景:我有一个使用谷歌firestore数据库的完整功能的iOS应用程序。一些用户是编辑,但目前必须选择图片和MP3,并在编辑模式下从手机应用程序上传这些图片和MP3。这不是很有效率。

问题:我看到很多Mac Catalyst stackoverflow在iOS/iPad代码和firebase协同工作方面的问题。谷歌的Firebase还不支持Mac Catalyst。

谢谢


共1个答案

匿名用户

固定

我有一组步骤来解决创建一个Mac应用程序来编辑另一个firebase数据库的问题。最后,你可以拉上拉链,将应用程序发送给另一个mac用户运行。

1.创建一个新的XCode项目-这里称为TryMacCatalyst。

2.在“Mac”框中打勾,然后点击出现的启用按钮。然后在Mac上运行确认。然后关闭项目以添加POD。

3.在项目的命令行中,像往常一样初始化一个pod项目。

pod init

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

现在将目标firebase安装中的'googleService-info.plist‘复制到项目中。它看起来应该是这样的:

结果表明,您可以在这里交换任何Google-Service-Info文件以指向任何Firebase DB。

为“grpc-c++-grpcCertificates-cpp”签名需要一个开发团队。在Signing&Capabilities编辑器中选择一个开发团队。

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身份验证的连接:

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

}

当您运行此操作时,您将得到一个错误:

访问钥匙串时出错。

再运行一次,它应该可以使用显示如下内容的日志:

GVMPR3Z7AOH6TOA4LO1S3R9ABCDE

这是anon用户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程序。

    谢谢

    约翰·古德施塔特