当我的iOS应用程序收到推送通知时,发生了一种奇怪的情况。用户界面保持锁定,无法正常工作。当我暂停调试器时,我在线程中看到了semaphore_wait_trap
。
调试代码我可以看到它与两件事有关:
isRegisteredForRemoteNotifications
方法(因为当我删除它时,问题消失了); 我收到如下推送通知
{aps:
{alert: { loc-args: [Fiat, Bravo, 501],
loc-key: SOME_TEXT
},
badge: 0,
sound: default.aiff
}
}
我用Xcode创建了一个新的简单项目,以证明我的意思。我正在使用先前的捆绑包标识符来接收相同的推送。
请遵循AppDelegate中显示问题的代码:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"My token is: %@", deviceToken);
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {
// [DefaultMethods saveInUserDefaults:@(1) forKey:kUserWasAskedForNotificationKey];
NSLog(@"Failed to get token, error: %@", error);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if( [[UIApplication sharedApplication] isRegisteredForRemoteNotifications] ){
NSLog(@"Success");
}
}
@end
感谢您的任何帮助!
最佳答案
我也正在处理此问题,并且在设备的日志中发现了此错误:
com.apple.usernotifications.usernotificationservice:捕获到异常
在解码接收到的消息期间,丢弃传入消息。
异常:解码参数0(调用#2)时发生异常:
例外:键“NS.objects”的值属于意外类
“NSNumber”。允许的类别为'{(
NSString,
NSArray)}'。
调用isRegisteredForRemoteNotifications后,应用程序已停止。
我们已经在服务器上解决了此问题,问题已解决。祝好运。