我正在尝试构建自己的库,我想知道是否有一种方法可以只在某个布尔值为true时在我的代码中实现一个方法。它类似于@available(iOS 14,*),但使用在我的类中声明的布尔值。
问题出现在推送的实现中。我在我的主AppDelegate中有一个变量,我想用继承来配置它。我有一个布尔值'pushNotificationsEnabled',它可以建立我是否想在这个项目中推送:
if pushNotificationsEnabled {
UNUserNotificationCenter.current().requestAuthorization(options: [.sound, .alert, .badge], completionHandler: { (_, _) in })
application.registerForRemoteNotifications()
UNUserNotificationCenter.current().delegate = self
}
但是我不能用didReceiveRemoteNotification方法来做这个逻辑,因为我必须硬编码它。在实现时(尽管它从未被调用),Xcode会在日志中删除以下文本:
- 您已经实现了-[ application:didReceiveRemoteNotification:fetchCompletionHandler:],但是您仍然需要将“远程通知”添加到Info. plist中支持的UI背景模式列表中。*
它实际上是正确的,方法正在实现,Xcode不必知道它是否会被使用。
我想知道是否有可能做我想要的逻辑,如果布尔值为真,所提到的方法才能实现。或者如果有一些比布尔值更正确的方法,这可能是我应该采取的选择。
问候,并感谢所有!
1条答案
按热度按时间bxfogqkk1#
这不能用运行时值来完成(如果
pushNotificationsEnabled
在程序运行期间被更改了,这将如何工作?)您需要的是一个编译时值,它由#if
指令支持。然后在Xcode中将
PUSH_NOTIFICATIONS_ENABLED
添加到SWIFT_ACTIVE_COMPILATION_CONDITIONS,或者使用Package.swift中的.define()
设置。