Может ли приложение Mac Catalyst управлять другой базой данных iOS firestore? Если да, то как его настроить

# #ios #firebase #macos #google-cloud-firestore #mac-catalyst

Вопрос:

Как я могу направить приложение Mac Catalyst в другую область firestore, чтобы пользователи 2 редактора могли легко управлять своими данными со своих ноутбуков?

Предыстория: У меня есть полностью функционирующее приложение iOS, использующее базу данных Google firestore. Несколько пользователей являются редакторами, но в настоящее время им приходится выбирать изображения и MP3-файлы и загружать их из приложения в режиме редактора на свой телефон. Это не очень эффективно.

Проблемы: Я вижу множество проблем Mac Catalyst stackoverflow с получением кода iOS/iPad и firebase для совместной работы. Mac Catalyst еще не поддерживается Firebase от Google.

Спасибо

Ответ №1:

исправлено

У меня есть набор шагов, которые решают создание приложения для Mac для редактирования другой базы данных firebase. В конце вы можете застегнуть молнию и отправить приложение для запуска другому пользователю Mac.

1.Создайте новый проект XCode, называемый здесь tryMacCatalyst.

2.Поставьте галочку в поле Mac и нажмите появившуюся кнопку включить. Затем запустите на Mac для подтверждения. Затем закройте проект, чтобы добавить модули.

Настройки XCode

3.Из командной строки проекта выполните обычные действия для инициализации проекта модуля.

 pod init
 
  1. Отредактируйте подфайл так, чтобы он выглядел именно так:

введите описание изображения здесь

  1. Запустите установку модуля: введите описание изображения здесь
  2. Откройте xcworkspace в XCode и запустите на «Моем Mac», чтобы протестировать создание этих библиотек.
  3. Теперь скопируйте в проект «GoogleService-Info.plist» из целевой установки firebase. это должно выглядеть примерно так:

введите описание изображения здесь

Оказывается, вы можете поменять местами любой файл Google-Service-Info здесь, чтобы указать на любую базу данных Firebase.

  1. Создайте приложение. Это выдаст ошибку:

Для подписания «gRPC-C -gRPCCertificates-Cpp» требуется команда разработчиков. Выберите команду разработчиков в редакторе подписей и возможностей.

  1. Итак, в XCode высветите папку PODS, чтобы она отображалась, как показано ниже: И установите команду.

введите описание изображения здесь

  1. Теперь добавьте некоторый swift-код,FirebaseApp.configure для AppDelegate:

введите описание изображения здесь

11.Добавьте код в ViewController для проверки подключения:Запустите, и вы увидите в журнале «проверка подлинности firebase проверена — пользователя нет»»

 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

Это идентификатор пользователя anon. Если вы перейдете в раздел авторизации консоли Firebase, этот uid будет присутствовать. Все команды firestore теперь будут работать. Есть еще один последний шаг, потому что, если мы попытаемся заархивировать это, это не удастся.

  1. Архивирование выдает ошибку:

    ssl_transport_security.h:29:12: Не нашел заголовок «x509.h» в фреймворке «openssl_grpc»

Чтобы исправить это, мы используем хорошо известный ответ, данный zummenix на github: ссылка на ответ zummenix на github

Шаги приведены здесь:

  1. Создайте файл mac sh ‘runBORINGSSLPatch.sh’ и используйте следующее (изменение <YOUR_MAC_LOGON_NAME> и <YOUR_MAC_LOGON_NAME><ИМЯ_ПРОЕКТА>):
          # 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" amp;amp; ln -s Versions/Current/Headers Headers amp;amp;
         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" amp;amp; ln -s Versions/Current/Headers Headers amp;amp;
         echo "Patched grpc"
     done
     
  2. Запустите этот файл с помощью команды:

    ./runBoringSSLPatch.sh

  3. Архивируйте снова — и это должно сработать. Теперь «Распространять приложение», Идентификатор разработчика, Экспорт. Затем отправьте папку другому пользователю.
  4. CTRL-C программа runBoringSSLPatch.

Спасибо

Джон Гудштадт