SwiftUI 学习 Choosing the Right Fu
- Choosing the Right Functionality for Your App Clip(为你的App Clip选择正确的功能)
回顾适用于应用程序剪辑的框架,并确定一个好的App Clip的功能。
概述
App Clip在确保快速启动、保护用户隐私和保存资源方面存在局限性。在你创建一个App Clip之前,首先回顾一下应用剪辑可用的技术,并确定哪些功能可以创建一个好的App Clip。
你的完整的应用程序只能有一个App Clip,并且完整的应用程序必须支持App Clip的所有功能。此外,应用程序剪辑必须很小——不超过10mb——才能立即启动。如果可能,保持你的应用剪辑低于这个限制。
回顾了现有的框架
1.应用剪辑使用了SwiftUI和UIKit,并且可以使用与你的完整应用相同的框架。
2.在运行时,以下框架只提供有限的功能:
Assets Library, Background Tasks, CallKit, CareKit, CloudKit, Contacts, Contacts UI, Core Motion, File Provider, File Provider UI, HealthKit, HomeKit, Media Player, Messages, Message UI, PhotoKit, ResearchKit, SensorKit, and Speech.
在App Clip中使用这些框架不会导致编译时错误,但它们的api会在运行时返回显示不可用、空数据或错误代码的值。例如,当你从一个应用剪辑中调用HealthKit的isHealthDataAvailable()时,它会返回false。
保护用户隐私
App Clip有一些限制,可以帮助保护用户隐私,防止用户在应用程序和应用剪辑之间跟踪,例如:
- SKAdNetwork提供的功能不可用。
- App Clip不能通过应用跟踪透明请求授权来跟踪用户。
- name和identifierForVendor都返回一个空字符串。
- 应用剪辑不能请求连续的位置访问。但是,他们可能会请求使用时授权,该授权会在第二天凌晨4点自动重置。
- App Clip不能要求读取存储在钱包应用程序中的
Pass Type IDs Entitlement
。但是,如果你的App Clip包含向钱包应用程序添加通行证的功能,你可以检查这个通行证是否已经存在。有关更多信息,请参见Checking Whether a Pass Is in the Library。 - 除了对应的完整应用程序之外,App Clip不能与任何其他应用程序共享数据。更多信息,请参见Making Data Available to the App Clip’s Corresponding App。
此外,App剪辑无法访问:
- 苹果音乐与媒体
- 来自联系人、文件、健康状况、信息、提醒和照片等应用程序的数据
- 运动和健康数据
为你的完整应用保留某些功能
为了保存资源和保护用户隐私,应用剪辑不能执行后台活动。例如,App Clip不能使用以下功能:
- 使用URLSession进行后台联网
- 后台模式功能所启用的功能,如推后台更新到你的应用程序中所述
- 保持蓝牙连接,而App Clip不使用
应用剪辑提供了一种即时体验,专注于为日常任务提供最快的解决方案,所以有些功能在你的完整应用中工作得最好:
- 替代高级网络特性(如Bonjour)和低级网络api(如CFSocket或POSIX函数),使用URLSession或网络框架。
- 应用程序扩展
- 自定义和设置;例如:创建设置包
- 数据切换和文件打开
- 应用内购买
- 低级Unix功能;例如,BSD通知
- iPad上的多场景
- 随需应变的资源
- 促进其他应用程序
- 注册自定义URL方案
- 通过使用StoreKit的requestReview(in:)方法请求用户对整个应用程序的评论
- 搜索已配对的蓝牙设备
请注意 ,App Clip可能会使用热点配置权限配置Wi-Fi网络。此外,为了连接到认证提供者,应用App Clip可以使用init(url:callbackURLScheme:completionHandler:)
和callbackURLScheme初始化一个ASWebAuthenticationSession。