AardvarkReveal
AardvarkReveal 是 Aardvark 的扩展,提供了生成包含 Reveal 文件的错误报告附件的组件。
安装
CocoaPods
要使用 CocoaPods 安装 AardvarkReveal,只需将以下行添加到 Podfile
pod 'AardvarkReveal'
入门指南
AardvarkReveal 提供了一个简单的工具类,用于生成包含压缩 Reveal 打包的 bug 报告附件。要开始使用,创建一个 RevealAttachmentGenerator
并指示其开始监听 Reveal 服务器。
self.revealAttachmentGenerator = RevealAttachmentGenerator()
self.revealAttachmentGenerator.startListeningForRevealServer()
生成器将监听 Reveal 的 Bonjour 服务并在后台自动连接。由于此进程是异步的,因此初始化生成器并尽早开始监听很重要。建议在您的应用/场景代理中保留生成器。
准备好提交 bug 报告时,调用生成器的 captureCurrentAppState(completionQueue:completion:)
方法。
revealAttachmentGenerator.captureCurrentAppState(completionQueue: .main) { attachment in
if let attachment = attachment {
// Attach it to the bug report
}
// Continue with the bug reporting flow
}
这将异步捕获应用程序状态,生成 Reveal 打包,从数据创建压缩存档,并将最终的 bug 报告附件通过完成调用返回。
以下是一个示例来展示如何设置工作,请查看演示应用程序中的 SceneDelegate。为了使体验更流畅,例如在生成器捕获快照时显示加载屏幕,您可以添加一个遵守 RevealAttachmentGeneratorDelegate
协议的代理。
生成器使用 Bonjour 与 Reveal 服务进行通信。您需要确保 Reveal 允许通过 Bonjour 进行广播,否则生成器将无法连接。有关更多信息,请参阅 支持文章。
您还需要启用对 localhost
的不安全 HTTP 连接,以允许生成器与 Reveal 服务通信。您可以通过在 Info.plist
中添加以下内容来启用此设置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
或者,您可以在 Info.plist
中添加一个构建阶段,如演示应用程序中所示 在此。我们强烈建议在您的应用程序中使用构建阶段,并仅将其限制为在所需的构建配置中运行。
演示应用程序
AardvarkReveal 内置了演示应用程序,展示了框架的使用方法。要运行演示应用程序:
- 克隆仓库。
- 打开
Example
目录。 - 运行
bundle exec pod install
。 - 打开
AardvarkRevealDemo.xcworkspace
。 - 为
AardvarkRevealDemo
启用代码签名,以便使用您的开发团队。 - 在您的设备上运行
AardvarkRevealDemo
方案。
请注意,演示应用程序使用基于电子邮件的错误报告器,因此它无法从模拟器中提交报告,因为模拟器不包括邮件应用程序。演示应用程序在 iOS 13 及更高版本上运行。
要求
- Xcode 11.0 或更高版本
- iOS 12.0 或更高版本
贡献
我们很高兴您对 AardvarkReveal 感兴趣,并希望看到您的进一步发展。提交拉取请求之前,请阅读我们的 贡献指南。
许可协议
Copyright 2021 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.