您的位置 首页 > 数码极客

nsus nsus电脑怎么连接手机热点?

响应App Clip调用

让代码在用户启动App Clip后快速且无缝地响应。

概览

App Clip用户体验的关键是要有一个好的启动体验。当用户调用了App Clip,系统会验证它。然后,用户用户启动了App Clip后,系统会将调用URL传递给它。

由于当用户安装了完整App后会替代App Clip,用户希望完整App至少要提供和App Clip一样的功能并且最好有相似的启动体验。快速的启动体验和高度聚焦的用户体验减少了用户在使用完整App时的操作步骤,确保用户体验是无缝升级的。

配置调用URL

App Clip和完整App都需要对调用URL进行响应,并相应更新用户界面来提供流畅的启动过程。例如,考虑一个业务分布在多个地理位置的App Clip。可以将业务域名配置为 来启动App Clip并让用户从列表中选择地理位置,但是这会需要额外的步骤降低用户的速度。可以通过配置调用URL和传递额外的URL参数来避免这一步。

对于App Clip和完整App:

  1. 声明 关联域名能力(Associated Domains capability) 并为每个启动App Clip的域名添加入口。如上面所述的例子一样,需要添加 myexam 。
  2. 留存未保存的数据以防用户移动到另外一个地方。
  3. 使用包含额外参数的调用URL。如 /location1 、 /location2 等等。
  4. 在启动时,响应URL并根据位置更新用户界面。

从地图App和Siri建议中的基于地理位置的建议发出的调用使用URL的是在App Clip体验中注册的URL。App Clip和完整App都必须能处理这个URL,即使只是使用这个URL作为实际调用URL的前缀。

例如,你可能会将 /menu 作为高级App Clip体验的部分。而从NFC标签中发起的调用,可能会使用如 /menu/dinner/item/1234 或 /menu/dinner/item/5678 。然而,App Clip和完整App也必须能够处理 /menu 。

更多信息,请查看<创建一个App Clip>和<配置App Clip的启动流程>。

访问调用URL

当用户启动了App Clip后,App Clip会收到一个NSUserActivity 对象用于响应调用。

重要 当用户安装了App Clip对应的App后,完整App会替代App Clip。所有的调用从那时起全部会启动完整App而不是App Clip。因此,完整App也必须能处理所有的调用并包含App Clip的功能。

如果需要保存任何状态和数据,以及在启动时访问 NSUserActivity :

  • 对于基于SwiftUI的App Clip和完整App,实现SwiftUI的生命周期回调。例如,使用onContinueUserActivity(_:perform:) 。
  • 对于基于UIKit的支持基于场景App生命周期事件的App Clip和完整App,实现定义在UISceneDelegate 中的回调。例如,实现scene(_:willConnectTo:options:) 、scene(_:willContinueUserActivityWithType:) 和scene(_:continue:) 等等。
  • 对于基于UIKit的响应基于App的生命周期事件的App Clip和完整App,实现定义在UIApplicationDelegate 中的回调。确保实现了application(_:continue:restorationHandler:) 回调,因为无法在application(_:didFinishLaunchingWithOptions:) 中访问NSUserActivity 。

在启动时,确保调用的类型是NSUserActivityTypeBrowsingWeb ,然后再获取启动App Clip的URL。下面的代码展示了一个从调用URL中提取组件的函数:

func respondTo(_ activity: NSUserActivity?) { // 抵御错误数据 guard activity != nil else { return } guard activity!.activityType != NSUserActivityTypeBrowsingWeb else { return } guard let incomingURL = activity?.webpageURL else { return } guard let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return } // 根据传入的URL组件更新用户界面 }

更多关于响应生命周期事件的信息,请查看<管理App的生命周期>。

确认用户的地理位置

如果创建的是一个用户在某个地理位置调用的App Clip,在允许执行任务前可能会需要确定用户位置。



就快速启动而言,App Clip可以使用一种轻量的机制让系统验证用户是在一个特定的期望的位置。

  1. 在App Clip的 In 文件中添加NSAppClip 键并将类型设置为 Dictionary 。
  2. 使用NSAppClipRequestLocationConfirmation 作为键, Boolean 作为类型,键值设为 true 添加到字典中。无需在App的 In 文件中添加这个入口。当用户安装完整App替代App Clip后,由于App Clip已经可以确认用户位置了,系统也会允许完整App这么做。
  3. 给App Clip提供期望的地理位置信息。要获取这个信息,可以在启动App Clip的URL中编码一个标记,然后使用这个标记在数据库中查找业务中的位置信息。或者,也可以将位置信息本身编码到URL中启动App Clip。
  4. 有了位置信息,创建一个最大半径在500米的 CLCircularRegion 对象,并将其传入confirmAcquired(in:completionHandler:) 函数。

当在 In 中添加了 NSAppClipRequestLocationConfirmation 键后,展示在App Clip调用之上的App Clip卡片包含了额外的注意信息,会告知用户App Clip会验证他们的位置。这个权限默认是启用的,但是用户可以在App Clip卡片上点击信息禁用。

下面的代码会在用户启动App Clip的时候验证用户的位置。确保对每个可能的结果都有更新对应的UI,包括用户拒绝访问地理位置服务的状况。

import UIKit import AppClip import CoreLocation class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? // 在所有适合的生命周期回调中调用verifyUserLocation(_:)函数 func verifyUserLocation(_ activity: NSUserActivity?) { // 抵御错误数据 guard activity != nil else { return } guard activity!.activityType != NSUserActivityTypeBrowsingWeb else { return } guard let payload = activity!.appClipActivationPayload else { return } guard let incomingURL = activity?.webpageURL else { return } // 创建CLRegion对象 guard let region = location(from: incomingURL) else { // 转换失败处理 return } // 验证App Clip调用发生在期望的位置 (in: region) { (inRegion, error) in guard let confirmationError = error as? APActivationPayloadError else { if inRegion { // NFC标签的位置匹配用户位置 } else { // NFC标签的位置与记录不匹配 // 比如有人移动了NFC标签的位置 } return } if con == .doesNotMatch { // 扫描的URL在App Clip中没有注册 } else { // 用户拒绝的位置获取,或调用App Clip的源头不是NFC标签或可见码 } } } func location(from url: URL) -> CLRegion? { let coordinates = CLLocationCoordinate2D(latitude: 37.334722, longitude: 122.008889) return CLCircularRegion(center: coordinates, radius: 100, identifier: "Apple Park") } }

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“nsus,nsus电脑怎么连接手机热点,nsus是什么型号电脑,nsus电脑,nsusbloader安卓版”边界阅读