Firebase In-App messageClicked для обмена сообщениями не работает ios swift

#ios #swift #buttonclick #firebase-in-app-messaging

# #iOS #swift #кнопка нажатия #firebase-in-app-messaging

Вопрос:

Я использую встроенную службу обмена сообщениями Firebase для своего приложения ios. Всплывающее сообщение отображается отлично. Но когда я нажимаю кнопку, которая находится во всплывающем окне, ничего не происходит, даже если я пишу приведенные ниже коды в качестве документации Firebase в своем приложении. Документация доступна по этой ссылке здесь.

 import FirebaseInAppMessaging
import FirebaseAnalytics

class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {
    
    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
        // ...
        print("Message Clicked!")
        
    }
    
    func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
                          dismissType: FIRInAppMessagingDismissType) {
        // ...
        print("Message Dismissed!")
    }
    
    func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
        // ...
        print("Impression Detected")
    }
    
    func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
        // ...
        print("Display Error")
    }

}
 
 import UIKit
import Firebase
import FirebaseInAppMessaging

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        FirebaseApp.configure()
        
        // [START fiam_register_delegate]
        // Register the delegate with the InAppMessaging instance
        let myFiamDelegate = CardActionFiamDelegate()
        InAppMessaging.inAppMessaging().delegate = myFiamDelegate;
        // [END fiam_register_delegate]
        ...
        return true
    }
    ...
 

Я не хочу использовать Firebase Console для действия кнопки или маршрутизации, потому что действие изменится в зависимости от состояния приложения. Поэтому это должно быть определено в коде. Если вы можете мне помочь, я буду ооочень рад!

Ответ №1:

Я думаю .delegate , это слабый указатель.

Итак, определите делегат как свойство класса. Это работает для меня.