测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布上次发布 | 2016年9月 |
SPM支持 SPM | ✓ |
由 Dan Federman,Dan Federman,Dimitris Koutsogiorgas 维护。
SuperDelegate 在所有 iOS SDKs 上提供了一个一致的 App Delegate API,同时保护您免受应用程序生命周期中的错误。
整合关于 UIApplicationDelegate API 合约中特性的本地知识和工作方案。
例如:在 iOS 8.4 中,在 application(_:handleWatchKitExtensionRequest:reply:)
被调用之前,会调用 application(_:didFinishLaunchingWithOptions:)
;但在 iOS 8.0-8.3 中并非如此。SuperDelegate 保护您免受此类 API 合约更改。
创建一个符合您需求的干净的 UIApplicationDelegate API。
例如:在 application(_:didFinishLaunchingWithOptions:)
和 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
将告诉您何时收到推送通知(有时它们会告诉您两次!),但它们无法区分由于用户点击通知而导致的发送还是由于在 APNS 字典中将 content-available=1
标志设置为导致的发送。SuperDelegate 的设计是为了在您需要时为您提供所需的信息。
要使用Swift 包管理器在您的 iOS 项目中安装 SuperDelegate,可以将以下定义添加到 Project
的依赖项中
.Package(
url: "https://github.com/square/SuperDelegate.git",
versions: Version(0,8,0)..<Version(0,9,0)
),
要使用 git 子模块,使用以下命令检出子模块:git submodule add [email protected]:Square/SuperDelegate.git
,将 SuperDelegate.xcodeproj 拖到您的项目中,并将 SuperDelegate 添加为构建依赖项。
public class AppDelegate: SuperDelegate, ApplicationLaunched
让您的 UIApplicationDelegate
继承自 SuperDelegate
并符合 ApplicationLaunched
协议。SuperDelegate 保证 setupApplication()
只在每次应用启动前被调用一次,在调用任何其他代理调用之前。SuperDelegate 还保证在您的应用程序在启动后被带到前台时,将只调用一次 loadInterfaceWithLaunchItem(_:)
。
要启用更多的AppDelegate功能,请使您的AppDelegate
类符合相应的协议。例如,使您的AppDelegate
类符合LocalNotificationCapable
将使您的应用程序具备发布本地通知的功能。
我们对您对SuperDelegate感兴趣感到高兴,并期待看到您如何改进它。在提交拉取请求之前,请阅读我们的贡献指南。
谢谢,祝您分配任务愉快!