Как узнать, отправлено ли создание темы на консоль (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()
}