0

アプリがフォアグラウンド/アクティブでない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]];

接続はまだ一時停止中です。

ありがとう!

4

2 に答える 2