我正在使用FCM进行云消息传递。当我在后台和前台应用状态下收到来自服务器的消息推送时,我想添加应用徽章。我错过了什么?主要问题是根据消息推送添加/更新/删除应用徽章,我可以接收和处理推送消息。我在这个问题上花了3天时间。请帮帮我!?*徽章号码根据内部内容的变化,如如果收到新的电子邮件邮件到gmail应用程序,徽章号码在后台和前台应用程序状态更改为未读邮件计数。
使用XCode 9.2、Swift 3.2、iOS11.6
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
var fcmtoken: String = ""
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
if let token = Messaging.messaging().fcmToken {
fcmtoken = token
print("FCM token: \(fcmtoken)")
} else {
print("FCM token: \(fcmtoken) == no FCM token")
}
return true
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
Messaging.messaging().subscribe(toTopic: "all")
print("subscribed to all topic in didReceiveRegistrationToken")
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new token is generated.
}
func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
Messaging.messaging().subscribe(toTopic: "all")
print("subscribed to all topic in notificationSettings")
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
print("userInfo -- \(userInfo)")
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
print("user info in didReceive response -- \(userInfo)")
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
print("called to foreground app")
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().subscribe(toTopic: "all")
print("subscribed to all topic in didRegisterForRemoteNotificationsWithDeviceToken")
}
有效载荷是您的内容:
我们刚才所做的大部分工作都替换了本地通知中的触发器。在有效负载中找到通知的内容。回到测试平台,您会发现:
{"aps":{"alert":"Enter your message","badge":1,"sound":"default"}}
理想情况下,您的JSON文件应该是这样的。你只有有效载荷的4K,所以浪费在空间上是不可取的。发送有效载荷时避免空白。然而,它们很难这样阅读。这样看起来更好:
{
"aps":{
"alert":"Enter your message",
"badge":1,
"sound":"default"
}
}
ap是一个JSON字典,其中包含描述内容的条目。警报条目可以是像这里一样的字符串,也可以是描述设备上显示的警报内容的字典。徽章给出徽章图标上显示的数字。声音播放默认声音。您可以修改此负载以更改警报中显示的内容。由于警报可以是字典或字符串,您可以向其添加更多内容。将有效载荷更改为:
{
"aps":{
"alert":{
"title":"Push Pizza Co.",
"body":"Your pizza is ready!"
},
"badge":42,
"sound":"default"
}
}
这将添加一个标题和一条关于你的比萨饼准备好的信息。它还将把徽章改为42
{"aps":{"alert":{"title":"Push Pizza Co.","body":"Your pizza is ready!"},"badge":42,"sound":"default"}}
通知将显示标题和正文。徽章以数字42出现。
但是,您也可以在应用程序处于活动状态时更改它。注册UserNotificationType需要用户的权限。一旦获得许可,您可以将其更改为您想要的任何号码。
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert |
UIUserNotificationType.Badge, categories: nil
))
application.applicationIconBadgeNumber = 5
你也可以这样做:
let badgeCount: Int = 10
let application = UIApplication.shared
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
application.registerForRemoteNotifications()
application.applicationIconBadgeNumber = badgeCount
结果:
参考:https://makeapppie.com/2017/01/03/basic-push-notifications-in-ios-10-and-swift/
我正在iOS8+上使用最新的试用版PubNub,Xcode7.3,试图建立一个聊天应用程序。我正在评估PubNub作为另一个聊天服务器的替代方案。 我遵循了PubNub文档中关于苹果推送通知的说明,但我的应用程序在后台时从不接收推送通知。 我已经创建了p12证书并将其导入到PubNub密钥集中。我在Xcode常规设置中启用了推送通知。我已经编写了PubNub文档中指定的Swift代码。我能够成功发
当app不再活动(即使是最近的任务)时,如何从FCM接收推送通知。我看到gmail、whatsapp都有这个功能。我正在使用FCM进行推送通知。我使用了WakefulBroadcast接收器来唤醒设备。我怎么用这个? 服务类别:
即使应用程序从后台被杀死或从内存中被刷出,我如何接收到设备的fcm通知。我使用维梧、Oppo、松下设备。但在应用程序被终止时未收到通知。
我使用的是FCM云消息,当应用程序在后台但未被杀死或应用程序正在运行时,它工作得很好。一旦应用程序被停止或从最近的应用程序杀死,它不会收到任何通知。 即使是在应用程序启动后,它也不会收到旧的消息。 用于发送通知的服务器端代码 firebase服务和通知的清单代码 感谢任何帮助。
我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为
我正在开发一个电子邮件应用程序,我希望用户在收到新电子邮件后立即收到推送通知。为此,我使用FCM。我刚刚通过以下链接尝试使用FCM推送通知:https://www.youtube.com/watch?v=XijS62iP1Xo 感谢每一种帮助。提前感谢。