我已经在我的 voip 应用程序中实现了呼叫工具包,我在其中生成传入或传出呼叫的呼叫日志(在最近的电话选项卡上可见)。当我点击通话记录时,它会打开我的应用程序。我已经覆盖了UIApplication委托方法来获取处理程序。
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
Run Code Online (Sandbox Code Playgroud)
但我无法在NSUserActivity. 如何在我的应用程序中获取通话记录信息?
任何帮助非常感谢。谢谢!
Swift 4 中的完整解决方案
您需要配置您的应用程序以继续调用 userActivity。
在 CXProviderConfiguration 中添加 supportedHandleTypes 属性
let configuration = CXProviderConfiguration.init(localizedName:"Product name")
configuration.supportedHandleTypes = Set([CXHandle.HandleType.generic])
Run Code Online (Sandbox Code Playgroud)在项目的 Info.plist 中添加 INStartAudioCallIntent 类型的 NSUserActivityTypes 
目标项目 -> 构建阶段 -> 库添加 Intents.framework
下面是从 userActivity 中提取电话号码的代码
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
let intraction = userActivity.interaction
let startAudioCallIntent = intraction?.intent as? INStartAudioCallIntent
let contact = startAudioCallIntent?.contacts?[0]
let contactHandle = contact?.personHandle
if let phoneNumber = contactHandle?.value {
print(phoneNumber)
}
return true
}
Run Code Online (Sandbox Code Playgroud)
希望这对你有帮助。
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |