Как я могу подписаться на пользователя на тему для уведомлений, как только запускается приложение?IOS

Программируем под IOS
Ответить
Anonymous
 Как я могу подписаться на пользователя на тему для уведомлений, как только запускается приложение?

Сообщение Anonymous »

Я использую HTTP Post для отправки уведомлений всем пользователям в приложении. Для этого у меня есть тема, чтобы подписаться на «Global». Я хочу, чтобы каждый пользователь был автоматически подписан на эту тему, чтобы убедиться, что они получают уведомления (при условии, что у них включены уведомления). < /P>

, где в моем коде я должен включить подписку, чтобы убедиться, что они всегда будут подписаться? Я боюсь, что я поставил это где -то неправильно, и они никогда не подписались. Я попытался подписаться в конце DidFinishLaungingWithoptions, но, похоже, слишком рано делать это здесь (я думаю, поскольку пользователь, возможно, еще не принял подсказку уведомления?). < /p>

В настоящее время подписка находится в DidGisterForReMotenotifications с помощью DoDevicetOken, однако это не вызывается в первом запуска приложения, поэтому для работы я должен запустить приложение во второй раз ... Вот мой соответствующий код в AppDelegate: < /p>

import UIKit
import Firebase
import FirebaseMessaging
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, FIRMessagingDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

FIRApp.configure()

if #available(iOS 10.0, *) {
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })

// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
// For iOS 10 data message (sent via FCM)
FIRMessaging.messaging().remoteMessageDelegate = self

} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

return true
}

func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
print("applicationReceivedRemoteMessage")
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
if let refreshedToken = FIRInstanceID.instanceID().token() {
print("InstanceID token: \(refreshedToken)")
FIRMessaging.messaging().subscribe(toTopic: "/topics/global")
}
}

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(UNNotificationPresentationOptions.alert)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
// If you are receiving a notification message while your app is in the background,
// this callback will not be fired till the user taps on the notification launching the application.
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// If you are receiving a notification message while your app is in the background,
// this callback will not be fired till the user taps on the notification launching the application.
}


Подробнее здесь: https://stackoverflow.com/questions/441 ... -starts-up
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»