Облачные функции Firebase не будут запускаться из приложения iOS - PullRequest
0 голосов
/ 30 января 2019

Я создаю приложение для iOS, использующее Firebase для бэкэнда, и мне нужно использовать Firebase Callable Cloud Functions.У меня все настроено в соответствии с тем, что документы и функции запускаются и ведут себя должным образом при запуске из браузера или curl, но я не могу заставить их запускаться из моего приложения.

Я настроил тестовое приложение, просто используя функциии я не могу заставить это стрелять из приложения iOS также.Даже не простой привет мир.Ничего не проходит.

Все, что было сделано:

Сторона Firebase:

  1. Firebase успешно подключено к приложению
  2. Установлено/ Локальная инициализация функций Firebase.
  3. Записанный код функции в VSCode, пытающийся использовать и Javascript, и TypeScript
  4. Успешно развернут в Firebase и может видеть функцию в консоли
  5. Протестированная функция через командную строкуи браузер на локальном сервере все работает как положено

Сторона iOS:

  1. Модуль с установленными функциями Firebase
  2. импортированные функции Firebase в ViewController
  3. Использовал Firebase SDK для вызова функции, совпадающей с именем функции в Firebase - привязан к триггеру кнопки

И я ничего не получаю ... оператор печати на кнопке работает, но функция не срабатывает и ничегорегистрируется в журналах Firebase.

Что я здесь упускаю или делаю неправильно?

Пробовал новый проект с новым экземпляром Fireбаза.Скопировал код прямо из примеров в документации Firebase и пошагово следовал за всем

FIREBASE CODE

const functions = require('firebase-functions');
const admin = require('firebase-admin')

exports.helloWorld = functions.https.onCall((data, context) => {

    const text = data.text;
    console.log("Text: " + text);
    const uid = context.uid;
    console.log("UID: " + uid);
    const name = context.name;
    console.log("Name: " + name);


    console.log('Hello world fucking worked baby!');
    return {
        message: text
    }
});

SWIFT CODE

import UIKit
import FirebaseFunctions

class ViewController: UIViewController {

    lazy var functions = Functions.functions()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func fireFunction(_ sender: Any) {
        print("Button Fire")

        let data = ["text": "hello!"]

        functions.httpsCallable("helloWorld").call(data) { (result, error) in
            print("Function returned")
            if let err = error {
                print(err)
            }

            if let res = result {
                print(res)
            }
        }
    }
}

1 Ответ

0 голосов
/ 30 января 2019

Кажется, что Google Cloud Function работает правильно, если он вызывается из браузера.Вы также можете просматривать журналы функции облака.Просто перейдите на страницу Cloud Functions и нажмите на свою функцию.Нажмите кнопку VIEW LOGS и попробуйте снова вызвать URL-адрес, если в способе вызова Swift возникнет ошибка, он будет там зарегистрирован.

Я не очень много работал с iOS Swift, но, посколькуВы пытаетесь вызвать функцию через Интернет, я думаю, что вам может потребоваться дать разрешения приложению для доступа в Интернет.Похоже, что вызов никогда не инициируется в облачной функции, поэтому он не запускается.

Я предполагаю, что облачная функция - это HTTP-активация.Поэтому в качестве обходного пути вы можете вызвать функцию, инициирующую HTTP-запрос из приложения.Опять же, это не сработает, если только вы не убедитесь, что у вашего приложения есть разрешения на использование Интернета.

...