UILocationNotification
我有一个应用程序,当应用程序不在前台/活动时,我需要发送一个。如果我有我的代码这样做,它不会发送,直到应用程序打开并处于活动状态。
这是我的功能:
- (void)setLocalNotificationForType:(SPKLocalNotificationType)notificationType fromUser:(NSString *)userName withMessageText:(NSString *)msgText {
UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.userInfo = @{@"handle": _convoHandle, @"room": _convoName};
notif.fireDate = [NSDate date];
notif.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
notif.soundName = UILocalNotificationDefaultSoundName;
notif.timeZone = [NSTimeZone defaultTimeZone];
if (notificationType == 1) { // message
notif.alertBody = [NSString stringWithFormat:@"@%@ said: \"%@\"", userName, msgText];
} else if (notificationType == 2) { // image
notif.alertBody = [NSString stringWithFormat:@"@%@ sent an image", userName];
} else {
return;
}
if ([[UIApplication sharedApplication] applicationState] != UIApplicationStateActive) {
[[UIApplication sharedApplication] presentLocalNotificationNow:notif];
}
}
更新:
现在看来问题在于应用程序在后台时与服务器的连接正在“暂停”。一旦我打开应用程序,所有数据都会立即进入。我正在使用SocketRocket连接到我的Node.js
Primus Web 套接字服务器。这是通常发生的事情吗?这是我第一次使用SocketRocket
所以我不确定。
更新:
我还启用Remote Notifications
了后台模式,我还注册了远程通知,并且在设备上,我还确保启用了“横幅”和“徽章”。
更新: 我还设置了 Web 套接字以使用后台队列。
[webSocket setDelegateOperationQueue:[NSOperationQueue new]];
连接仍在暂停。
谢谢!