2

VoIP PushKit を使用して iOS SDK を開発しています。プッシュ通知を受け取ったときの SDK のコードは次のとおりです。

- (void)onReceiveMessagecontent:(NSString *)content{    
    if (content && ![content isEqualToString:@""]) {
        if ([[WalkieTalkie sharedWT].delegate respondsToSelector:@selector(onPushMessage:)]) {
            [[WalkieTalkie sharedWT].delegate onPushMessage:content];
        }
    }
}

デリゲートが呼び出される SDK Demo MainViewController.m のコードは次のとおりです。

- (void)onPushMessage:(NSString *)messageContent{
    NSString *content = [NSString stringWithFormat:@"on recive push message: %@", messageContent];

    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"收到推送" message:content preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *cancelButton = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
        [alert addAction:cancelButton];
        [self presentViewController:alert animated:YES completion:nil];
    } else{
        dispatch_async(dispatch_get_main_queue(), ^{
            UILocalNotification *notification = [[UILocalNotification alloc] init];
            notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
            notification.alertBody = content;
            notification.timeZone = [NSTimeZone defaultTimeZone];
            notification.soundName = UILocalNotificationDefaultSoundName;
            notification.applicationIconBadgeNumber = 1;

            [[UIApplication sharedApplication] scheduleLocalNotification:notification];
        });
    }
}

アプリがアクティブな場合、UIAlertController は正常に動作しますが、アプリを強制終了すると、バックグラウンド モードで UILocalNotification が起動しません。ただし、リモート通知が既に呼び出され[[WalkieTalkie sharedWT].delegate onPushMessage:content];、SDK でコード行が実行されていることを証明する Xcode からのデバイス ログを確認できます。しかし、デモアプリは何も表示せず、反応もありません。デリゲート コードを間違った場所に配置しましたか? それとも、SDK がアクティブで、アプリがまだバックグラウンドにあるだけですか? よくわからないのでアドバイスよろしくお願いします!

4

1 に答える 1