我在我们的应用程序中实现了CallKit.我们的应用程序制作调用显示在本机电话应用程序的最新列表中.
在最近列表中点击我们的应用程序条目时,我们的应用程序已启动.有没有办法找出用于启动我们的应用程序的数字(/条目)?(openURL或其他)
您将要application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool在AppDelegate 上实现.对于此特定操作,userActivity将具有interaction属性,其intent属性是INStartAudioCallIntent(或者INStartVideoCallIntent如果您的应用程序执行视频)的实例.
intent对象上有一个INPerson联系对象数组,可用于确定有关所拨内容的信息.
如果您的应用程序未将任何联系人加载到系统中,则您的呼叫是一对一的(而不是组),并且您只想访问"拨打的号码",您可能会找到您想要的内容intent.contacts?.first?.personHandle?.value.
另请注意,您需要链接并导入Intents框架.
更新
之前的答案只有一半是正确的.有两种获取此信息的方法,两者都应该实现.
当点击最近的项目(或选择联系人)并且您的应用程序已在运行时,将调用上面的continueUserActivity变体.
但是,如果您的应用当前未运行,则它将启动并且continueUserActivity不会被调用.相反,系统将didFinishLaunchingWithOptions使用a 调用您的AppDelegate UIApplicationLaunchOptionsKey.userActivityDictionary,可以使用如下:
if let activityOptions = launchOptions?[UIApplicationLaunchOptionsKey.userActivityDictionary] as? [String: AnyObject],
let activity = activityOptions["UIApplicationLaunchOptionsUserActivityKey"] as? NSUserActivity {
self.launchWithActivity(activity)
}
Run Code Online (Sandbox Code Playgroud)
获得NSUserActivity实例后,行为与其相同continueUserActivity
再次更新
根据@vivek takrani在下面的评论中,似乎continueUserActivity可以随时调用,无论应用程序以前是否打开.如果你打算支持它,我会在iOS 10的早期版本上测试这个,因为我不相信这个答案写的时候就是这种情况.
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |