当iOS应用程序收到推送通知时,会出现一种奇怪的情况。 UI保持锁定状态,没有任何效果。当我暂停调试器时,我在我的线程中看到semaphore_wait_trap
。isRegisteredForRemoteNotifications用semaphore_wait_trap锁定用户界面
Debbuging的代码,我可以看到它关系到两两件事:
- 在推送通知的值类型(因为当我改变号码为String问题消失);
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
感谢您的帮助!