向 AppDelegate 添加类别以实现 UIAplicationDelegate 协议中的方法
Adding a category to AppDelegate to implement a method from UIAplicationDelegate protocol
我正在开发一个 Cocoa Touch Framework,我想接收来自 APNS 的远程通知,我发现(在所有需要与 APNS 建立通信的过程之后)我必须在 application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。但是,我想让 IOS 开发人员尽可能少地工作,所以我一直在想。
- 是否可以在我的框架内创建 AppDelegate 的类别(因为它
创建新应用程序时已经有扩展名)以便
实现这个方法 ?.
我会说不需要。您在这里可以做的是使用与 application:didReceiveRemoteNotification:fetchCompletionHandler:
中相同的参数在您的代码中创建一些函数,并使其可供可能的开发人员从您的框架中调用。
许多框架都以这种方式工作,例如 FacebookSDK。
例如,我在 AppDelegate 中的代码 opening/handling URL:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let fbHandled: Bool = ApplicationDelegate.shared.application(app,
open: url,
sourceApplication: options[.sourceApplication] as? String,
annotation: options[.annotation])
return fbHandled
}
您可以看到 Facebook 只是为我提供了一些 public 方法来处理其 SDK 中的链接。与隐式处理开发人员可能需要了解并可用于更改其代码的内容相比,这是一个更好的解决方案。
我正在开发一个 Cocoa Touch Framework,我想接收来自 APNS 的远程通知,我发现(在所有需要与 APNS 建立通信的过程之后)我必须在 application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。但是,我想让 IOS 开发人员尽可能少地工作,所以我一直在想。
- 是否可以在我的框架内创建 AppDelegate 的类别(因为它 创建新应用程序时已经有扩展名)以便 实现这个方法 ?.
我会说不需要。您在这里可以做的是使用与 application:didReceiveRemoteNotification:fetchCompletionHandler:
中相同的参数在您的代码中创建一些函数,并使其可供可能的开发人员从您的框架中调用。
许多框架都以这种方式工作,例如 FacebookSDK。 例如,我在 AppDelegate 中的代码 opening/handling URL:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let fbHandled: Bool = ApplicationDelegate.shared.application(app,
open: url,
sourceApplication: options[.sourceApplication] as? String,
annotation: options[.annotation])
return fbHandled
}
您可以看到 Facebook 只是为我提供了一些 public 方法来处理其 SDK 中的链接。与隐式处理开发人员可能需要了解并可用于更改其代码的内容相比,这是一个更好的解决方案。