从 iOS8 中的通知在后台启动呼叫
Posted
技术标签:
【中文标题】从 iOS8 中的通知在后台启动呼叫【英文标题】:Launch a call when in background from a notification in iOS8 【发布时间】:2015-05-21 09:53:44 【问题描述】:从ios8开始,我们可以在UILocalNotification
中显示一些提示选项
在我的应用程序中,我可以选择报警。据我所知,从后台发起呼叫是不可能的,那么你有什么建议?我可以启动应用程序然后触发呼叫吗?或者还有其他选择吗?
【问题讨论】:
你可以启动应用并调用 【参考方案1】:如果您想在推送通知到达时在后台线程中执行操作(未挂起),您需要在推送通知有效负载中发送“content-available”:@“1”。有了这个,你就可以在后台处理应用程序
您可以在使用断点实现后进行测试。 当应用程序正在运行但在后台发送推送通知。
内容可用
【讨论】:
这是一个简单的预定UILocalNotification
如果您的应用正在使用位置、播放音频,您可以从后台调用方法......developer.apple.com/library/ios/documentation/iPhone/Conceptual/…
好的,我们可以启动一个方法,但是我们不能启动电话应用来拨打电话。
是的,我们不能为该用户打开应用程序,您可以将代码发送到服务器并致电该地区的警察【参考方案2】:
所以,我找到了一个解决方案:
声明UIMutableUserNotificationAction
时,应将其激活模式设置为UIUserNotificationActivationModeForeground
:
UIMutableUserNotificationAction *notificationAction1 =[[UIMutableUserNotificationAction alloc] init];
notificationAction1.identifier = @"identifier1";
notificationAction1.title = @"identifier1";
notificationAction1.activationMode = UIUserNotificationActivationModeForeground; //HERE the tip
notificationAction1.destructive = NO;
notificationAction1.authenticationRequired = NO;
然后在你的 AppDelegate 方法中:
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler
if ([identifier isEqualToString:@"identifier1"])
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
就是这样!
【讨论】:
以上是关于从 iOS8 中的通知在后台启动呼叫的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在后台运行时获取 iPhone 通知以呼叫我的委托
iOS 10:如何在应用程序处于后台时显示传入的 VOIP 呼叫通知?
iOS 8 推送通知操作按钮 - 当应用程序在后台时,handleActionWithIdentifier 中的代码并不总是运行