Как узнать, отправлено ли создание темы на консоль (Firebase Cloud Messaging)

Я использую Google Firebase с xCode (swift). Мне нужно создать тему динамически, из-за выбора пользователя.

Вчера я создал тему с:

FIRMessaging.messaging().subscribe(toTopic: "/topics/\(button.titleLabel?.text!)")

И я ждал создания темы в консоли, я видел, что это занимает максимум 1 день, но ничего.

Я также создал новую тему программно (а не динамически) с этим кодом:

FIRMessaging.messaging().subscribe(toTopic: "/topics/Notifiche")

и это работало без проблем (я ждал создания 4/5 часов)..

Мой вопрос: есть метод, который позволяет мне сейчас, если тема "в процессе создания"? Поскольку я не знаю, если мой код неверен, метод подписки () ничего не сказал

Спасибо вам всем!

1 ответ

Решение

Найденный.

Добавление темы в консоль занимает несколько часов, но, как уже было сказано, ее уже можно использовать до этого.

Вы не можете узнать это через консоль Firebase, но вы можете сделать HTTP-запрос, чтобы узнать, подписаны ли вы на эту конкретную тему.

ЗАПРОС HTTP

https://iid.googleapis.com/iid/info/<input token here>?details=true

Как взять токен

FIRInstanceID.instanceID().token()

ПОЛНЫЙ КОД

(Этот код позволяет отписаться от всех тем)

    func unsubscribe_topics(){


    let token = FIRInstanceID.instanceID().token();

    let url = URL(string: "https://iid.googleapis.com/iid/info/\(token!)?details=true")

        let request = NSMutableURLRequest(url: url! as URL)
        request.httpMethod = "POST"


        //define the multipart request type


        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.setValue("key=<insert server key here>", forHTTPHeaderField: "Authorization")


        let session = URLSession.shared


        let task = session.dataTask(with: request as URLRequest) {
            (data, response, error) in

            guard let _:NSData = data as NSData?, let _:URLResponse = response, error == nil else {
                print("error")
                return
            }


            let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)

            let dati_da_string = dataString?.data(using: String.Encoding.utf8.rawValue)!
            let parsedData = try? JSONSerialization.jsonObject(with: dati_da_string!) as! NSDictionary
            if let rel = parsedData?["rel"] {
                let relaz = rel as! NSDictionary
                let topics = relaz["topics"] as! NSDictionary
                let topics_registrati = topics.allKeys as! [String]
                for i in 0...(topics_registrati.count-1){
                    FIRMessaging.messaging().unsubscribe(fromTopic: "/topics/\(topics_registrati[i])")
                    print("Unsubscibed from: \(topics_registrati[i])")
                }
            }



        }

        task.resume()

    }
Другие вопросы по тегам