例如,iOS 14+中存在AppTrackingTransitan,但有一款应用程序支持iOS 13+.
我使用了以下代码:
@available(iOS 14, *)
func requestATTPermissions() ->
Future<ATTrackingManager.AuthorizationStatus, Never> {
...
}
if #available(iOS 14, *) {
requestATTPermissions()
.sink { [weak self] _ in
self?.completion?()
}
.store(in: &combineSubscriptionCollector.subscriptions)
} else {
completion?()
}
但有没有可能将if #available(iOS 14, *) {
移到Future
/AnyPublisher
中,在iOS 13中像Just(())
一样工作,在iOS14+中请求ATT?不知何故,就像这样:
Just(()).map {
if #available(iOS 14, *) {
return requestATTPermissions()
.map { status in ... }
} else {
return Just(())
}
}
.sink { [weak self] _ in
self?.completion?()
}
.store(in: &combineSubscriptionCollector.subscriptions)