测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | Apache 2 |
发布最后发布 | 2017年5月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Matthew Wyskiel 管理。
如果您曾在使用任何第三方库的应用程序上工作过(每个人都是),那么您可能知道,添加库的许可证到您的应用中的“致谢”页面是礼貌的(有时还可能是强制性的,具体取决于库)。而且,这些页面往往很繁琐,尤其是更新时。有了 LicensesKit,您的烦恼就结束了!
许多流行的许可证显示库(比如 VTAcknowledgementsViewController 和 TRZSlideLicenseViewController)只支持当所有库都在 CocoaPods 中。虽然自动汇总所有许可证很方便,但如果您使用的是 Google 的 API 客户端(例如 Google's API client),而您不希望使用一个过时的 pod(例如 outdated pod),您会直接使用项目网站上的 SVN。
使用 LicensesKit,您可以仅聚集有关您正在使用的库的基本信息,并将其包含在您的应用包中的 JSON 文件中(以下详细介绍具体细节),或者如果您更喜欢,可以在代码中添加它们。这为您作为开发者提供了一种抽象和简化,因为您不需要担心库来自哪里,您只需要列出它们即可。
使用 CocoaPods(0.36+)
pod 'LicensesKit'
此库的基本使用方法是创建一个 LicensesViewController
对象,添加您应用中包含的库,并将视图控制器推送到屏幕上。
一个 通知 是一个包含有关正在使用的库及其许可证的信息的对象。特别是
属性 | 描述 | 示例 |
---|---|---|
name | 库的名称 | "AFNetworking" |
url | 可以找到库的 URL | "https://github.com/AFNetworking/AFNetworking" |
copyright | 库的版权信息(通常与许可证配对出现) | “版权所有(c)2013-2014 AFNetworking(http://afnetworking.com/)” |
许可证 | 库使用的许可证 | MIT许可证() |
如上所述,许可证
是License
类型的属性,该库包含许多子类,用于大多数常见的许可证,并且经常添加,包括
mozilla公共许可证,版本2.0
当然,您可以使用CustomLicense
类来构建自己的许可证,如果它没有被列在上面(例如,如果库有自己的自定义许可证)。
为了自动化将您在应用程序中使用的所有库的许可证聚合在一起的过程,您可以列出您应用程序包中包含的所有库及其许可证的JSON文件,格式如下所示
{
"notices": [
{
"name": "LicensesKit",
"url": "https://github.com/mattwyskiel/LicensesKit",
"copyright": "Copyright (C) 2014 Matthew Wyskiel",
"license": "Apache Software License 2.0"
},
{
"name": "StringBuilder",
"url": "https://github.com/mattwyskiel/StringBuilder",
"copyright": "Copyright (C) 2014 Matthew Wyskiel",
"license": "Apache Software License 2.0"
}
]
}
许可证
字段值直接对应于在库中定义或自定义定义的许可证的名称
。为了库能够使用您自己定义的许可证(通过继承License
或创建CustomLicense
实例),您需要将许可证注册到LicensesViewController实例的licensesResolver
对象中,如下所示
Swift
licensesVC.resolver.registerLicense(customLicense)
objective-c
[licensesVC.resolver registerLicense:customLicense];
一旦您有了您的JSON文件并注册了所有需要的自定义许可证,只需要在您的LicenseViewController实例上使用setNoticesFromJSONFile(filepath:)
方法
Swift
licensesVC.setNoticesFromJSONFile(filepathForJSONFile)
objective-c
[licensesVC setNoticesFromJSONFile:filepathForJSONFile];
注意:如果您从JSON添加通知,这将覆盖LicensesViewController
实例中当前设置的所有通知。如果您想要按代码添加通知(如下所述),请在调用setNoticesFromJSONFile(filepath:)
之后这样做。
要按代码添加通知,只需创建一个Notice
实例,然后调用addNotice(notice:)
(或如果您想一次添加多个通知,可以调用addNotices(notices:
)。
Swift
let notice = Notice(name: "AFNetworking", url: "https://github.com/AFNetworking/AFNetworking", copyright: "Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com/)", license: MITLicense())
licensesVC.addNotice(notice)
objective-c
Notice *notice = [[Notice alloc] initWithName:@"AFNetworking" url:@"https://github.com/AFNetworking/AFNetworking" copyright:@"Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com/)" license: [[MITLicense alloc] init]];
[licensesVC addNotice:notice];
当然,您可以可选地自定义许可证在LicensesViewController
实例中显示时的外观。
cssStyle
属性设置为CSS代码的字符串以覆盖在LicensesViewController
中显示的内容的样式。pageHeader
属性设置为HTML代码的字符串,以在第一个许可证显示上方添加内容。pageFooter
属性设置为HTML代码的字符串,以在最后显示的许可证下方添加内容。本库中的所有公共API都是内联文档化的(只需快速查看任何项以获取更多信息)。因此,文档也可在CocoaDocs找到。
就这么简单!我希望您同样能充分利用这个库,并且喜欢使用它。
请,如果您发现BUG,请告诉我他们在问题或自己提交拉取请求。那将帮助很多!
LicensesKit许可适用于Apache软件许可证2.0。请参阅LICENSE文件获取更多信息