我在iOS上遇到FCM通知问题.
我收到成功通知时,我的应用程序是在前台(回调didReceiveRemoteNotification中appdelegate被解雇),但是当应用程序在后台我没有收到通知(我看不出在iOS中的通知栏,任何东西).
所以,我认为问题在于FCM发送的消息格式.我的服务器发送给FCM的json采用以下格式:
{
"data":{
"title":"mytitle",
"body":"mybody",
"url":"myurl"
},
"notification":{
"title":"mytitle",
"body":"mybody"
},
"to":"/topics/topic"
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我的json中有两个块:一个通知块(用于接收后台通知)和一个数据块(用于接收前台通知).
我无法理解为什么没有收到后台通知.我的疑问是关于块的顺序(如果我在"通知"块之前放置"数据"块会有问题吗?).
编辑: 有关该问题的更多信息.
这是我的appdelegate.swift:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
var window: UIWindow?
// Application started
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
{
let pushNotificationSettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
application.registerUserNotificationSettings(pushNotificationSettings)
application.registerForRemoteNotifications()
FIRApp.configure()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "tokenRefreshNotification:", name: kFIRInstanceIDTokenRefreshNotification, object: nil)
return true
}
// Handle refresh notification token
func tokenRefreshNotification(notification: NSNotification) {
let …Run Code Online (Sandbox Code Playgroud) ios firebase google-cloud-messaging swift firebase-cloud-messaging
我正在考虑在数据库中保留所有注册ID(推送令牌)并从iPhone发送通知给用户.我试过这样的事情,但没有得到任何通知.
func sendPNMessage() {
FIRMessaging.messaging().sendMessage(
["body": "hey"],
to: TOKEN_ID,
withMessageID: "1",
timeToLive: 108)
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么或者根本不可能做到这一点?
ios firebase google-cloud-messaging firebase-cloud-messaging firebase-notifications
我是一个iPhone应用程序编码器,我使用Firebase作为我的后端服务器.Firebase不支持推送通知,所以我一直在试图弄清楚如何将它们包含在我的应用中.我已经读过这个问题:如何向一个使用firebase的特殊在线用户发送警报消息,但它看起来更像是一个解决方案,而不是一个实际的解决方案.
有关于如何做到这一点的答案吗?是否有第三方或API可能无法实现此功能?
我尝试过的一个解决方案是使用Zapier将Firebase连接到Pushover.
此时,我已经能够在应用程序中观察我正在编码的事件,然后在我的iphone上的pushover应用程序中收到通知.但是,理想情况下,我希望在我的应用中收到通知,而不是在pushover应用中,因为我不希望用户需要进行推送才能使用我的应用,因为我希望用户能够收到他们自己的通知,而不是每个人的通知.
有没有人对如何处理这个问题有任何建议?
谢谢您的帮助!
编辑 这不是这个问题的重复: firebase是否处理推送通知?因为我知道Firebase不会直接处理推送通知.我正在寻找使用Firebase处理推送通知的最佳间接方式.
我对 Firestore 非常陌生,并试图了解实时更新的工作原理。我现在使用类似的方法从 Firestore 获取更新:
db
.collection(Collections.session)
.whereField("participants", arrayContains:userID)
.addSnapshotListener { querySnapshot, error in
Run Code Online (Sandbox Code Playgroud)
我注意到,当应用程序位于后台时,侦听器块不会被触发,而只有当应用程序返回前台时才被触发。
有没有办法在应用程序也在后台运行时获取更新?也许以某种方式发送推送通知或其他什么?
非常感谢任何形式的帮助。