家长控制和设备管理

首先,处于保护用户隐私的考虑,苹果将一些数据绑定到了指定控件上,比如我们选择了一个应用(Application),直接获取他的图标、名字、ID之类的都是空的,需要把他传入到指定的UI控件中,控件里面有获取相关信息的能力,并展示。这些展示应用信息、读取应用列表的控件都是基于swift UI来的,我们要熟悉swift UI。API也偏新一些,好多都是iOS16、iOS17以上才支持的,所以建议最低支持到iOS17

下面先介绍主要类库及其功能

综合管理(ManagedSettings)

#分类功能

ManagedSettingsStore

核心类,设置存储中心
1ManagedSettingsGroup基础协议
2

AppStoreSettings

设置是否允许APP内购买、独立的购买密码等
3

ApplicationSettings

隐藏应用、禁止安装、禁止卸载
4

CellularSettings

网络:禁止修改网络设置、禁止SIM卡设置
5

DateAndTimeSettings

时间和日期:禁止修改时间日期
6

GameCenterSettings

禁止多人游戏、禁止添加好友
7

AccountSettings

Apple ID、Icloud
8

MediaSettings

禁用图书中的色情内容、音乐服务、
9

PasscodeSettings

禁止修改设备密码
10

SafariSettings

cookie、自动填充密码
11

ShieldSettings

禁止使用(应用或者网站)设置
12

SiriSettings

是否禁用
13

WebContentSettings

网站拦截

FamilyControls

选择应用后如何展示出来呢,在FamilyControls下面,有个扩展,也就是说需要用Label来展示,传入对应的token即可

extension Label where Title == FamilyActivityTitleView, Icon == FamilyActivityIconView {

    /// Creates a label representing a family activity application.
    public init(_ applicationToken: ApplicationToken)

    /// Creates a label representing a family activity category.
    public init(_ categoryToken: ActivityCategoryToken)

    /// Creates a label representing a family activity web domain.
    public init(_ webDomainToken: WebDomainToken)
}

/// TitleView的定义
@MainActor @preconcurrency public struct FamilyActivityTitleView : View {
   
    @MainActor @preconcurrency public var body: some View { get }

    @available(iOS 15.0, *)
    @available(tvOS, unavailable)
    @available(watchOS, unavailable)
    @available(macOS, unavailable)
    public typealias Body = some View
}

/// IconView的定义
@MainActor @preconcurrency public struct FamilyActivityIconView : View {
    
    @MainActor @preconcurrency public var body: some View { get }

    @available(iOS 15.0, *)
    @available(tvOS, unavailable)
    @available(watchOS, unavailable)
    @available(macOS, unavailable)
    public typealias Body = some View
}

DeviceActivity

过几天忙完了再进一步补充细节

发布构建

如果打包的时候,提示Provisioning profile failed qualification,如下图

说明我们还没申请下来权限,只能用于开发调试

根据文档

FamilyControls | Apple Developer Documentation

Important

You must add the Family Controls capability to your app before you call the requestAuthorization(for:) or revokeAuthorization(completionHandler:) methods. This capability adds the Family Controls entitlement to your app. Before submitting your app to the App Store, you must request permission to use the entitlement. For more information, see Adding capabilities to your app.

明确说明我们上线的话需要向苹果申请权限,点击上面的  request permission 根据提示填写即可。申请通过后(2~3天),会收到苹果的邮件,此时还没完,需要我们到开发者后台进行配置,截图如下

家长控制权限申请下来之前,additional capabilities这里是没有家长控制的选项的,只有capabilities里有个Family Controls (Development),勾上Family Controls (Distribution)之后,删掉Xcode里的证书,打包发布

还没完,这时候可能还会报上面截图中的错,那是因为我们使用家长控制的时候往往都会用到扩展

DeviceActivityMonitorReportExtension

com.gytc.dspyzq.SReportExtension

ShieldConfiguration

我们添加扩展的时候,系统会默认给这个依赖添加Family Controls (Development)的能力,主要是这个影响了打包发布。打包的时候删除即可,调试用的时候再加进来。

如何学习

网上的资料比较少,有几个懂得还要开会员才能看,所以靠自学多一些。看swift的几个类,一个一个的看,看完了就大致清晰了,当然,我相信本文可以帮助你构建一个基本的印象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值