Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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 isRegisteredForRemoteNotifications使用信号量\u等待\u陷阱锁定UI_Ios_Push Notification_Locking_Freeze - Fatal编程技术网

Ios isRegisteredForRemoteNotifications使用信号量\u等待\u陷阱锁定UI

Ios isRegisteredForRemoteNotifications使用信号量\u等待\u陷阱锁定UI,ios,push-notification,locking,freeze,Ios,Push Notification,Locking,Freeze,当我的iOS应用程序收到推送通知时,出现了一种奇怪的情况。用户界面保持锁定,任何东西都无法工作。暂停调试器时,我会在线程中看到信号灯\u等待\u陷阱 我可以看到,代码的去bug与两件事有关: 推送通知中的值类型(因为当我将数字更改为字符串时,问题消失) isRegisteredForRemoteNotifications方法(因为当我删除它时,问题就消失了) 我收到如下推送通知 {aps: {alert: { loc-args: [Fiat, Bravo, 501], l

当我的iOS应用程序收到推送通知时,出现了一种奇怪的情况。用户界面保持锁定,任何东西都无法工作。暂停调试器时,我会在线程中看到
信号灯\u等待\u陷阱

我可以看到,代码的去bug与两件事有关:

  • 推送通知中的值类型(因为当我将数字更改为字符串时,问题消失)
  • isRegisteredForRemoteNotifications
    方法(因为当我删除它时,问题就消失了)
我收到如下推送通知

{aps: 
    {alert: { loc-args: [Fiat, Bravo, 501],
     loc-key: SOME_TEXT 
    },
    badge: 0,
    sound: default.aiff
    }
}
我用Xcode做了一个简单的新项目来证明我所说的。我使用上一个包标识符来接收相同的推送。 按照AppDelegate中显示问题的代码进行操作:

@实现AppDelegate
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{
//应用程序启动后自定义的覆盖点。
返回YES;
}
-(无效)应用程序:(UIApplication*)应用程序DIdRegisterForRemotionTificationswithDeviceToken:(NSData*)deviceToken{
NSLog(@“我的令牌是:%@”,deviceToken);
}
-(无效)应用程序:(UIApplication*)应用程序未能注册远程通知,错误为:(N错误*)错误{
//[DefaultMethods saveInUserDefaults:@(1)forKey:kUserWasAskedForNotificationKey];
NSLog(@“无法获取令牌,错误:%@”,错误);
}
-(无效)应用程序:(UIApplication*)应用程序DidReceiveMemotentification:(NSDictionary*)用户信息{
如果([[UIApplication sharedApplication]isRegisteredForRemoteNotifications]){
NSLog(“成功”);
}
}
@结束

谢谢你的帮助

我也在处理这个问题,在我的设备日志中发现了这个错误:

com.apple.usernotifications.usernotificationservice:捕获异常 在解码接收到的消息时,丢弃传入消息。 异常:解码参数0时异常(调用的#2): 异常:“NS.objects”键的值属于意外类 “NSNumber”。允许的课程是'{( NSString, NSArray)}

调用isRegisteredForRemoteNotifications后,应用程序已停止


我们已经在服务器上修复了此问题,问题消失了。祝你好运。

我也有同样的摊位问题

事实证明,我在控制台上也收到了一个推送通知解析错误(就像上面@CFIFOK提到的那样)

“NSXPCConnection:--”与名为com.apple.usernotifications.usernotificationservice的服务的连接: 解码收到的消息时捕获异常,丢弃传入消息。 异常:解码参数0时异常(调用的#2): 异常:键“NS.objects”的值属于意外的类“NSNumber”。 允许的课程是'{( NSString, 不可变数组 )}"

这是由于
“title loc args”:[3333]
不接受3333,而是接受它作为字符串
“title loc args”:[“3333”]
。在我访问了前面提到的方法
isRegisteredForRemoteNotifications
之后,这个小东西使我的整个界面停止运行

需要考虑的一点是,此暂停仅在iOS 11上发生。它在iOS 12.0(16A5366a)上运行良好

为了调试这个错误,我使用了Pusher-app()并跟踪了导致解析错误的参数

希望这有帮助