iOS 10 : How to show incoming VOIP call notification when app is in background?

标签 ios objective-c notifications voip usernotifications

我正在处理音频/视频通话,并尝试让来电通知循环 1 分钟,就像 WhatsApp 在 iOS 中显示的那样应用程序是背景,通知横幅隐藏和显示铃声 1 分钟。

我试过这段代码,它只触发一次:

 UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
    content.title = [NSString stringWithFormat:@"Video Call from %@",userId];
    content.body = @"";
    content.userInfo = [userInfo mutableCopy];
    content.sound = [UNNotificationSound soundNamed:@""];

    NSDate *now = [NSDate date];
    now = [now dateByAddingTimeInterval:3];
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    [calendar setTimeZone:[NSTimeZone localTimeZone]];

    NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitTimeZone fromDate:now];

    UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:NO];
    UNNotificationRequest * request = [UNNotificationRequest requestWithIdentifier:@"INCOMING_VOIP_APN" content:content trigger:trigger];

    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        if (!error) {
            NSLog(@"PUSHKIT : INCOMING_VOIP_APN");
        }
    }];

我怎样才能做到这一点?我正在使用 UserNotifications.framework (iOS 10)PushKit

最佳答案

我的建议是本地通知仅在特定时间可见。你要做的就是设置本地通知或者来电时通知。当通知触发时,在通知的委托(delegate)方法中,您必须在 NSTimer 的帮助下构建自定义逻辑。 .

创建一个类似于推送通知的 View /或您要为通话显示的 View 。将它添加到应用程序窗口,以便它显示在所有 View 的顶部。 3 秒后删除此 View ,在逻辑中您可以显示相同的 View 1 分钟。

关于iOS 10 : How to show incoming VOIP call notification when app is in background?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41845576/

相关文章:

ios - 如何复制 Storyboard中设计的 UIView?

android - NameError: uninitialized constant Rpush::Gcm 我正在尝试将 rpush 用于我的移动应用程序。但我一直收到这个错误

ios - 如何在应用程序未启动时调试推送通知?

ios - 从推送通知(FCM)获取数据,无需点击通知

iPhone/iOS JSON解析教程

ios - 在 UITabBarController 中隐藏了 UINavigationController

objective-c - 使用 CIFaceFeature 检测前置摄像头中的眨眼

iOS 8 - 按钮在水平 ScrollView 中没有响应

objective-c - 在 Xcode 中收到 "Control reaches end of non-void function"错误消息

iOS 日期格式 28 Mar 2016/16 :54pm