Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么可以';我不能在Swift5中读取推送消息数据吗?_Ios_Swift_Firebase_Push Notification - Fatal编程技术网

Ios 为什么可以';我不能在Swift5中读取推送消息数据吗?

Ios 为什么可以';我不能在Swift5中读取推送消息数据吗?,ios,swift,firebase,push-notification,Ios,Swift,Firebase,Push Notification,我有一个问题,此时无法读取推送消息数据。我通常会收到信息 我可以在应用程序处于前台时接收,也可以在按下Home(主页)按钮时在后台接收 但是我在日志中看不到消息数据 AppDelegate.swift class AppDelegate:UIResponder、UIApplicationDelegate、UnuseNotificationCenterDelegate、MessagingDelegate{ ... func应用程序(application:UIApplication,DidRece

我有一个问题,此时无法读取推送消息数据。我通常会收到信息

我可以在应用程序处于前台时接收,也可以在按下Home(主页)按钮时在后台接收

但是我在日志中看不到消息数据

AppDelegate.swift

class AppDelegate:UIResponder、UIApplicationDelegate、UnuseNotificationCenterDelegate、MessagingDelegate{
...
func应用程序(application:UIApplication,DidReceiveMotonification数据:[AnyHashable:Any]){
//如果您在应用程序处于后台时收到通知消息,
//在用户点击启动应用程序的通知之前,不会触发此回调。
//TODO:处理通知的数据
//禁用swizzling后,您必须让消息传递了解消息,以便进行分析
警卫
将aps=data[AnyHashable(“notification”)]设为NSDictionary,
将alert=aps[“alert”]设为NSDictionary,
将body=警报[“body”]设为?字符串,
将title=警报[“title”]设为?字符串
否则{
//在这里处理任何错误
返回
}
Log.Info(“标题:\(标题)\n正文:\(正文)”)
Messaging.Messaging().appDidReceiveMessage(数据)
//打印完整消息。
日志信息(数据)
}
...
func消息传递(u消息传递:消息传递,didReceiveRegistrationToken fcmToken:String){
Log.Info(“fcmToken\(fcmToken)”)
}
func消息传递(uMessaging:messaging,didReceive remoteMessage:MessagingRemoteMessage){
Log.Info(“remort\(remoteMessage.appData)”)
}
我发送的数据

{

     notification : {

                            "title" : "test title.",  

                            "body" : "test context."            

                      },

     data : {

                    "image" : "http://11.111.111.111:100000000/_img/sample_01.jpg",  

                    "page_url" : "http://11.111.111.111:100000000/Point?address=",   

                    "type" : "point"       

             }

}
任何功能都无法查看日志。我缺少什么?请告诉我有什么问题


编辑


我修改了错误的数据并更改了日志的位置。但是我身上没有任何日志

AppDelegate.swift

func应用程序(application:UIApplication,DidReceiveMemotentification数据:[AnyHashable:Any]){
//如果您在应用程序处于后台时收到通知消息,
//在用户点击启动应用程序的通知之前,不会触发此回调。
//TODO:处理通知的数据
//禁用swizzling后,您必须让消息传递了解消息,以便进行分析
//打印完整消息。
日志信息(数据)
警卫
将aps=data[AnyHashable(“notification”)]设为NSDictionary,
将body=aps[“body”]设为?字符串,
将title=aps[“title”]设为?字符串
否则{
//在这里处理任何错误
返回
}
Log.Info(“标题:\(标题)\n正文:\(正文)”)
Messaging.Messaging().appDidReceiveMessage(数据)
}
在firebase中发送测试消息


除了应用程序的
应用程序
功能外,我还有两个
消息功能
功能。我不需要这些消息功能吗?这些功能从未向我显示过日志。

这使用不同的功能解决了此问题

我用另一个函数解决了它,但我希望有另一个好的解决方案

我想知道根本问题是什么,这只是另一种选择

@可用(iOS 10,*)
func userNotificationCenter(center:UNUserNotificationCenter,
didReceive响应:UNNotificationResponse,
withCompletionHandler completionHandler:@escaping()->Void){
让数据=response.notification.request.content.userInfo
警卫
将aps=data[AnyHashable(“aps”)]设为NSDictionary,
将alert=aps[“alert”]设为NSDictionary,
将body=警报[“body”]设为?字符串
否则{
Log.Error(“这不是好数据”)
返回
}
日志信息(正文)
completionHandler()
}

您正在使用的方法在iOS 10中被弃用

通知框架将此方法替换为iOS 10以后更新的方法:

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) 

通知框架的更多详细信息可供查阅

我在您的数据中没有看到关键的“警报”,使用swift字典而不是NSDictionaryHi@JoakimDanielson没错,但我甚至看不到完整的数据。'Log.Info(数据)'将该log语句移动到函数的开头,如果guard语句失败,它将退出,其余的则不会executed@JoakimDanielson请看我修改的问题。@JoakimDanielson除了应用程序函数外,我还有两个消息函数。这不是必需的吗?这不是一个替代方法,这是应该采用的方法ce iOS10