问题标签 [nsuseractivity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
479 浏览

ios - 继续 userActivity: NSUserActivity - 识别它来自 callkit 或联系人

我已经在我的项目中实现了 callkit。

因此,当我报告来电时,会有视频按钮。所以根据这个答案user102008's Answer When user tap on video button

使用意图类型调用的委托方法INStartVideoCallIntent

但是在其他情况下,INStartVideoCallIntent 当用户从联系人应用程序中点击视频按钮时,会调用相同的委托方法

看图片 在此处输入图像描述

现在的问题是我无法确定如何区分动作 Callkit 视频按钮和联系人视频按钮。

任何帮助或建议都会有所帮助。提前致谢

0 投票
0 回答
321 浏览

ios - UserActivity ReferrerURL 为零

- (BOOL)application:(UIApplication *)application continueUserActivity:userActivity...

处理深度链接委托的方法有 userActivity,它的属性之一是 referrerURL,它总是 nil 我的猜测是它应该包含启动深度链接的引用应用程序或网站数据。

NSUserActivity 文档:nsuseractivity

referrerURL 文档:referrerurl

我的问题是我如何才能收到正确的referrerURL 而不是 nil

0 投票
1 回答
390 浏览

ios - 设置 userActivity 时,我们是否必须覆盖 updateUserActivityState

文档对updateUserActivityState我来说有点模糊。

https://developer.apple.com/documentation/uikit/uiresponder/1621095-updateuseractivitystate

子类覆盖此方法以更新给定用户活动的状态。您应该使用其 addUserInfoEntries(from:) 方法将表示用户活动的状态添加到 NSUserActivity 对象中。

当状态为脏时,应将 NSUserActivity 的 needsSave 属性设置为 true,该方法会在适当的时候被调用。

所以当我们这样做的时候会调用这个方法:

然后我们可以相应地更新活动:

但是当我们只设置一次活动并且从不更新它时,我们是否也总是必须实现updateUserActivityState

例如,在设置活动一次时viewDidLoad

0 投票
1 回答
2290 浏览

swift - application:continueUserActivity:restorationHandler: 使用切换时未调用

我在我的测试设备(不使用模拟器)和 SwiftUI 上使用最新版本的 Xcode、macOS、iOS

我的 SwiftUI 用户界面和我的 UserActivity DelegateHandler:

在我的里面appdelegate

当我在一台设备上启动应用程序并使用我的另一台设备进入该菜单(双击主页按钮时)并单击屏幕底部我的测试应用程序的切换符号时,应用程序启动但该功能application:continueUserActivity:restorationHandler:永远不会被调用,所以我无法继续,而是通过单击它来启动应用程序时显示标准行为。任何想法为什么会这样?

0 投票
1 回答
1085 浏览

ios - NSUserActivity:当用户从我的应用程序的最近日志中点击(或拨打电话)时,将调用哪个方法?

我正在快速实现 CallKit,并且在直接从最近的日志中拨打电话时遇到了 NSUserActivity 的问题。

在最近的日志中点击我的应用程序条目时,我的应用程序正在启动,但 AppDelegate 的任何方法都没有调用。

我已经从应用程序功能中打开了 Siri,并在 info.plist 中添加了 NSUserActivityType。我在 NSUserActivityType 中添加了 INStartAudioCallIntent 和 INStartVideoCallIntent。我在 AppDelegate 类中实现的方法如下:

从最近的日志中点击我的应用程序的任何条目时,调试器控制台中会打印以下行。

AppDelegate-BAA416CD-ED84-4161-A054-B2192AFAD47A application:continueUserActivity:restorationHandler:] 已附加交互但未处理

0 投票
0 回答
80 浏览

corespotlight - 在 Spotlight 中重复显示 NSUserActivity

我知道有几篇关于这个主题的帖子,但它们与我的问题有很大不同。

我正在尝试NSUserActivity在 Spotlight 搜索中显示我的。对于我来说NSUserActivity,我使用了三个 API .isEligibleForHandoff.isEligibleForSearch.isEligibleForPrediction.

我的问题是我的活动在 Spotlight 搜索中显示了两次,其中一个结果提供了一个空的 userInfo,而另一个没有。但是Apple Programming Guide建议:

使用以下策略来避免创建单个项目的重复表示:

如果您同时使用 NSUserActivity 和 Core Spotlight API 来索引项目,请为相关唯一标识符和唯一标识符使用相同的值来链接项目的表示。

但我认为这甚至不是我的问题,因为我没有使用任何 Core Spotlight API。

那是我在UIResponder课堂上的代码:

注意:该updateUserActivityState(activity:)方法被连续调用两次。

那么如何避免在 Spotlight 搜索中获得多个搜索结果,并确保userInfo保留具有属性集的搜索结果。

0 投票
1 回答
536 浏览

ios - 尝试状态恢复时在基于文档的应用程序中获取“错误域 = NSCocoaErrorDomain 代码 = 257”

完整的错误信息是:

[main] *** 来自 FPBookmarkableStringFromDocumentURL 的错误,file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/MY_APP/hello.txt -> Error Domain=NSCocoaErrorDomain Code=257“文件无法打开,因为您无权查看。”

当我重新启动我的应用程序并尝试重新打开以前打开的文件时(例如,当应用程序“后台”和释放内存时,从 SceneDelegate(在 iOS 13 中引入)引发此错误,因此我想重新加载场景的状态)。我按照这个 WWDC 会话https://developer.apple.com/videos/play/wwdc2019/212的步骤和从https://developer.apple.com/documentation/uikit/app_and_environment/scenes/下载的示例源代码支持_multiple_windows_on_ipad

我基本上复制了他们的 configure(window: UIWindow?, with activity: NSUserActivity) -> Bool 函数并将其转换为适合我的需要。它似乎完美无缺,但我得到了错误。

我正在使用https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/Handoff/AdoptingHandoff/AdoptingHandoff.html#/的“在基于文档的应用程序中采用切换”部分中描述的默认 NSUserActivity 技术/apple_ref/doc/uid/TP40014338-CH2-SW17

这是配置函数的主体:

如果有人知道解决方法,谢谢。

0 投票
0 回答
444 浏览

ios - watchOS 6 和 iOS 13 NSUserActivity 切换不起作用

自从更新到 iOS 13 和 watchOS 6 后,对于我构建的任何应用程序,我都无法让 Handoff 功能从 Apple Watch 运行到 iPhone。该功能以前适用于我现有的自定义构建应用程序,但自操作系统更新后不再有效。我可以确认支持 Apple Watch 和 iPhone 上的 Handoff 的 Apple 本机应用程序工作正常,因此我排除了任何 iCloud 登录/帐户问题。为了帮助解决问题并隔离问题,我最终构建了一个演示 iOS 和 watchOS 应用程序来测试 Handoff 功能。我确保在 NSUserActivityTypes 下的 iOS 应用程序的 info.plist 中包含用户活动,并且我使用的是相同的开发人员团队 ID。我也在使用最新的 Xcode 版本 11.2.1。当下面的 WKInterfaceController 可见时,Handoff 图标应该出现在我的 iPhone 上的 App Switcher 中,但它没有出现。自更新以来我错过了什么吗?谢谢。

这是我的 WatchKit 代码。

iOS 应用上的 Info.plist。 在此处输入图像描述

0 投票
1 回答
410 浏览

ios - 是否可以从另一个应用程序更改 NSUserActivity 的 userInfo?

我正在尝试使用以下通用链接从应用 A 打开应用 B:

在 App B 的 AppDelegate -> application continueUserActivity restoreHandler 方法中,它调用了另一个处理 userActivity 的函数。这里有一个 NSUserActivity 的 userInfo 的检查。它正在检查 NSUserActivity 的 userInfo 属性中的键 PageName,并根据该值为活动分配一个类型并相应地路由应用程序。

我想知道是否可以在 App A 中更改或添加键值对到 userInfo,以便 App B 可以将我路由到另一个选项卡。(在这种情况下,我希望它打开另一个选项卡并搜索通用链接中的位置字符串)

我在 StackOverflow 和 Apple 开发者论坛上检查了与 NSUserActivity 的 userInfo 相关的其他问题,但他们没有在调用应用程序上更改它。(例如在应用程序 A 中)

谢谢

0 投票
0 回答
239 浏览

swift - 如何从通用链接 userActivity 显示视图控制器?

如何从 userActivity 在我的 UserActionManager 类中显示视图控制器?

我正在使用通用链接并设置了 apple-app-site-association 文件。

当我发现 userActivity.webPageURL.lastPathComponent 等于“注册”时,我想推送到 RegistrationViewController。

目前,我创建了一个单独的单例,称为 UserActionManager,我想在其中处理 lastPathComponents 并呈现正确的视图控制器。

在 UserActionManager 中我可以成功命中handleRegistrationUserActivity,但需要添加逻辑或协议来显示相关的 ViewController。

应用委托:

用户操作管理器: