如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?

Posted

技术标签:

【中文标题】如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?【英文标题】:How to display FCM 'data' message received using firebase-cpp-sdk on iOS? 【发布时间】:2020-06-03 20:26:08 【问题描述】:

当我的应用程序处于后台或被终止时,我需要显示通知。我使用 firebase-cpp-sdk 在 ios 上显示 FCM '通知' 消息没有问题,我尝试了 quickstart-cpp/messaging/testapp 并且它工作正常。但是当应用程序处于后台或前台时收到“数据”消息时 - 没有显示通知,我只是在日志中看到收到消息。

我在消息中使用"content_available": true,正如许多答案所建议的那样。正如我在日志中看到的那样,这有助于实际接收“数据”消息,但未显示该消息。 我尝试了旧的 HTTP 和 HTTP v1 协议,结果是一样的。 遗留 HTTP 消息的一个示例是:


    "data": 
        "body": "Entrance door Intrusion at 2 Jun 2020 01:32:08",
        "title": "Intrusion"
    ,
    "content_available": true,
    "to": "fcm_device_token_here"

我需要像在 android 上那样手动创建通知吗?或者还有其他方法可以做到吗?

【问题讨论】:

【参考方案1】:

回答我自己的问题 - 是的,我创建了一个本地通知。为此,我使用了qt-notification 库,因为我使用的是 QT,但显示通知的代码示例如下(取自项目):

// create content
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
content.title = title.toNSString(); // your title
content.body = caption.toNSString(); // your notification text
content.sound = !sound.isEmpty() ? [UNNotificationSound soundNamed: sound.toNSString()] : [UNNotificationSound defaultSound]; // your sound
// content.sound = [UNNotificationSound criticalSoundNamed: sound.toNSString() withAudioVolume: 1.0]; // For that you need Apple's permission
content.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);

// create trigger time
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];

// unique identifier
NSString* identifierNSString = identifier.toNSString();

// create notification request
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifierNSString
        content:content trigger:trigger];

// add request
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = id(m_Delegate);

[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) 
    if (error) 
        NSLog(@"Local Notification failed");
    
];

【讨论】:

以上是关于如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 10 上使用 CallKit 显示来电显示(添加标识条目)

如何在 iOS 中使用 MpMoviePlayerController 在 UISlider 上显示缓冲数据?

如何使用 SwiftUI 在 iOS 上获取和显示联系人照片?

如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏

如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?

如何使用Swift在iOS 8上显示带有文本的活动指示器?