tldr; 将 AppCheck 集成到您的应用程序中可能需要更改一些代码,具体取决于您希望用于生成 AppCheck 令牌的证明提供者。
我如何知道 appcheck 是否正确实施?
如果您能够在 Firebase 控制台中看到请求指标,则表明 AppCheck 已正确实施且正常工作。
其中一个视频说,对于 iOS,您只需要安装 SDK,配置就会自动进行。
默认情况下, AppCheck SDK 将使用 Apple 的 DeviceCheck 作为证明提供者来生成令牌。因此,通过这种方式,配置是自动的。
然而,当我回到 AppAttest 的书面文档时,我看到了一些用于初始化的代码......
Apple 的 AppAttest 是一个不同的证明提供程序,默认情况下不使用。如果您希望 AppCheck 使用 AppAttest 生成令牌,则需要添加代码来配置 AppCheck 以执行此操作。
我是否必须实施它,如果没有,它的用途是什么?
这取决于您的用例,我将解释:
AppCheck SDK 使用AppCheckProvider
s 生成应用检查令牌。
AppCheck从s获取这些AppCheckProvider
实例。AppCheckProviderFactory
如前所述,AppCheck 默认会使用 DeviceCheck,所以如果AppCheckProviderFactory
手动设置为 no,AppCheck 将使用方便实现的DeviceCheckProviderFactory
.
AppCheckProviderFactory
您可以使用AppCheck.setAppCheckProviderFactory(_:)
API设置 AppCheck 。如果您选择这样做,则必须在调用之前FirebaseApp.configure()
完成。请参阅以下文档中的示例:
let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
因此,要回答您的问题,您是否实现该AppCheckProviderFactory
协议取决于AppCheckProvider
您希望用于生成应用检查令牌的内容。
如果您希望 AppCheck 使用提供程序或提供程序组合以外的任何提供DeviceCheckProvider
程序,则您需要实现AppCheckProviderFactory
协议并将 AppCheck 设置为使用已实现的工厂。
s有 4 种类型AppCheckProvider
:
AppAttestProvider
DeviceCheckProvider
AppCheckDebugProvider
- 您作为子类创建的自定义提供程序
AppCheckProvider
例如,这是一个示例工厂实现,其中 AppCheck 将在调试模式下使用调试提供程序,如果操作系统版本支持 AppAttest,则使用 AppAttest 提供程序,如果不支持 AppAttest,则回退到使用 DeviceCheck 提供程序。
class YourAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if DEBUG
return AppCheckDebugProvider(app: app)
#endif
if #available(iOS 14.0, *) {
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
}
}
如您所见,自定义AppCheckProviderFactory
允许您精细控制 AppCheck 使用的提供程序。
我希望这回答了你的问题!