我已经跟随文档成功注册了推送通知到Sendbird (上传的.p12开发证书+注册设备令牌到Sendbird SDK等),但没有收到任何通知。
func application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) {
NSUserDefaults.standardUserDefaults().setObject(deviceToken, forKey: "deviceToken")
SBDMain.registerDevicePushToken(deviceToken) { (status, error) in
if error == nil {
if status == SBDPushTokenRegistrationStatus.Pending {
SBDMain.connectWithUserId("\(UserDataStore.ownerProfile?.id!)", completionHandler: { (user, error) in
SBDMain.registerDevicePushToken(SBDMain.getPendingPushToken()!, completionHandler: { (status, error) in
print("Sendbird Registration Succeeded 2nd attempt")
})
})
} else {
print("Sendbird Registration Succeeded")
}
} else {
print("Sendbird Push Registration Failed")
}
}
}在我的didReceive...我什么都没收到。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
if let aps = userInfo["aps"] as? NSDictionary {
if let alert = aps["alert"] as? NSDictionary {
if let message = alert["message"] as? NSString {
print(message)
}
} else if let alert = aps["alert"] as? NSString {
print(alert)
}
}
if application.applicationState == .Inactive {
NSNotificationCenter.defaultCenter().postNotificationName("pushNotificationReceived", object: nil)
} else {
NSNotificationCenter.defaultCenter().postNotificationName("pushNotificationReceivedActive", object: nil)
}
}我过去做过推送通知,对这个过程很熟悉。事实上,我刚刚用Firebase Cloud Messaging进行了测试,推送与他们的服务配合得很好。如果有人能帮上忙,我会非常感谢……我很好奇,看看是否有任何额外的步骤,需要采取与Sendbird。
更新:我已经联系了Sendbird,问题是他们的仪表板上有一个bug,你可以在那里上传.p12文件;删除文件并重新上传可以解决这个问题。自那以后,该错误已被修补。
发布于 2016-09-21 20:42:31
SendBird仅在用户离线时才向其发送推送通知。
请确认您已向脱机用户发送消息。(例如,按下主页按钮使应用程序在后台运行,使其从SendBird脱机)
发布于 2019-08-29 17:01:55
对于那些在应用运行时没有收到推送通知,只有在用户离线的情况下才能收到推送通知的人,一旦用户连接到通过通道委托接收消息,您就必须为通道注册一个回调处理程序,然后您可以从那里进行本地推送通知:
class GroupChannelChattingViewController: UIViewController, SBDChannelDelegate {
SBDMain.add(self as SBDChannelDelegate, identifier: self.delegateIdentifier)
func channel(_ sender: SBDBaseChannel, didReceive message: SBDBaseMessage) {
if message is SBDUserMessage {
// Do something when the received message is a UserMessage.
}
else if message is SBDFileMessage {
// Do something when the received message is a FileMessage.
}
else if message is SBDAdminMessage {
// Do something when the received message is an AdminMessage.
}
}
}这可以在here中找到。
https://stackoverflow.com/questions/39583076
复制相似问题