アプリがフォアグラウンド/アクティブでない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];
}
}
更新:
問題は、アプリがバックグラウンドにあるときにサーバーへの接続が「一時停止」していることにあるようです。アプリを開くと、すべてのデータが一度に読み込まれます。Primus Web ソケット サーバーへの接続にSocketRocketを使用しています。これって、普通にありえますか?初めて使うのでよくわかりません。Node.js
SocketRocket
更新:バックグラウンド モード
も有効Remote Notifications
にしました。リモート通知も登録しました。また、デバイスで「バナー」と「バッジ」が有効になっていることも確認しました。
更新: バックグラウンド キューを使用するように Web ソケットを追加で設定しました。
[webSocket setDelegateOperationQueue:[NSOperationQueue new]];
接続はまだ一時停止中です。
ありがとう!