Post

Replies

Boosts

Views

Activity

UICollectionViewDiffableDataSource deadlock scenario on iOS 18
We encountered a deadlock scenario when our app runs on iOS 18. It happens when we use the async version of UICollectionViewDiffableDataSource.apply() and request a section snapshot from within the UICollectionViewCompositionalLayoutSectionProvider. The deadlock doesn't happen when using the completion handler version of UICollectionViewDiffableDataSource.apply() or when requesting a full snapshot from the data source. On iOS 17 there is no issue. import UIKit class ViewController: UICollectionViewController { private enum SectionIdentifier: Hashable { case test } private enum ItemIdentifier: Hashable { case test(UUID) } private typealias Snapshot = NSDiffableDataSourceSnapshot<SectionIdentifier, ItemIdentifier> private typealias SectionSnapshot = NSDiffableDataSourceSectionSnapshot<ItemIdentifier> private typealias DataSource = UICollectionViewDiffableDataSource<SectionIdentifier, ItemIdentifier> private lazy var dataSource: DataSource = { let cellRegistration = UICollectionView.CellRegistration<UICollectionViewCell, UIColor> { cell, _, color in cell.contentView.backgroundColor = color } return DataSource(collectionView: collectionView) { [weak self] collectionView, indexPath, itemIdentifier in return collectionView.dequeueConfiguredReusableCell(using: cellRegistration, for: indexPath, item: .red) } }() override func viewDidLoad() { super.viewDidLoad() collectionView.dataSource = dataSource collectionView.collectionViewLayout = UICollectionViewCompositionalLayout { [weak self] section, environment -> NSCollectionLayoutSection? in // calling `UICollectionViewDiffableDataSource.snapshot(for:)` from the `UICollectionViewCompositionalLayoutSectionProvider` leads to deadlock on iOS 18 let numberOfItems = self?.dataSource.snapshot(for: .test).items.count ?? 0 // deadlock // calling `UICollectionViewDiffableDataSource.snapshot()` causes no issue // let numberOfItems = self?.dataSource.snapshot().numberOfItems(inSection: .test) ?? 0 // works let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(100), heightDimension: .absolute(100))) let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(100)), repeatingSubitem: item, count: numberOfItems) group.interItemSpacing = .fixed(5) return .init(group: group) } var snapshot = Snapshot() snapshot.appendSections([.test]) snapshot.appendItems([.test(UUID()), .test(UUID()), .test(UUID()), .test(UUID())]) // using the async wrapper `UICollectionViewDiffableDataSource.apply()` on any thread leads to deadlock on iOS 18 Task { await dataSource.apply(snapshot) } // deadlock // Task { @MainActor in await dataSource.apply(snapshot) } // deadlock // using `UICollectionViewDiffableDataSource.apply()` with completion handling causes no issue // Task { dataSource.apply(snapshot) } // works // dataSource.apply(snapshot) // works } } Full example project at https://github.com/antiraum/iOS18_UICollectionViewDiffableDataSource_deadlock
3
0
584
Jun ’24
Account Authentication Modification Extension on iOS 18
We currently have an Account Authentication Modification Extension in our iOS App so that users can update their passwords directly from within the Passwords section in the iOS Settings App. On iOS 18 beta3 the extension is not executed from the new Passwords app. Instead the URL associated with the credentials is opened when choosing to change a password. Will it still be possible to integrate with the new Passwords app or is this no longer supported? https://developer.apple.com/wwdc24/10125 only mentions https://example.com/.well-known/change-password Also, can we provide the information to the Passwords app that our service does not support verification codes? So that the "set up verification code" option is not displayed for our website in the Passwords app.
1
0
611
Jul ’24
Are suggested Play Media Intents no longer shown on lock screen?
Play media intents suggested via INUpcomingMediaManager.setSuggestedMediaIntents(_:) have been shown on the iOS lock screen in past iOS versions. In iOS 16/17 play media intents seem to be only shown within the Siri suggestions in the spotlight overlay and in the Siri suggestion widget. When the intents were shown on the lock screen, it was possible to open a preview via long press. Similar to notification previews. Preview support could be implemented with an Intents UI extension. Is there still any place in current iOS versions where play media intents are surfaced and a preview can be opened? In the spotlight overlay a long press has no effect.
0
0
389
May ’24
Apple Archive Xcode 14 dyld Linker error on iOS/tvOS 14/15 Simulators
Running an app that uses AppleArchive with Xcode 14.0/14.1 on simulators with iOS/tvOS 14.x/15.x fails with a dyld linker error: Library not loaded: /usr/lib/swift/libswiftAppleArchive.dylib Referenced from: /Users/tom/Library/Developer/CoreSimulator/Devices/A35CB8BA-9ABF-4E4D-B985-FEF35091FB88/data/Containers/Bundle/Application/5A504371-0F53-4E06-9F46-81D73835E906/MyApp.app/MyApp Reason: tried: '/Users/tom/Library/Developer/Xcode/DerivedData/MyApp-ffndhzhjdbfrvuhkxftdfqudypxx/Build/Products/Debug-iphonesimulator/libswiftAppleArchive.dylib' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/introspection/libswiftAppleArchive.dylib' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftAppleArchive.dylib' (no such file), '/usr/lib/swift/libswiftAppleArchive.dylib' (no such file), '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libswiftAppleArchive.dylib' (no such file) Running the app on iOS/tvOS 14.x/15.x devices works. Also release builds run fine on those devices. I'm unable to test if this issues was already present in Xcode 13, because running apps with AppleArchive on simulators fails because of another bug: https://developer.apple.com/forums/thread/665465 Feedback: FB11703995
2
0
1.4k
Oct ’22
ITMS-90562: Invalid Bundle with Xcode 13.3 RC
When archiving and uploading a build of our tvOS app to App Store Connect with Xcode 13.3RC, it gets rejected with TMS-90562: Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path. When archiving and uploading with Xcode 13.2.1 the build is accepted and processed. I could not find any rpath issues when inspecting the binary with otool -L and otool -l. Has anyone else experienced the this issue with Xcode 13.3RC? I've filed feedback FB9952607
36
0
12k
Mar ’22
AppleTV HLG support
Does AppleTV 4K support HLG in any configuration? When I connect my AppleTV 4K to a Samsung TV with HLG support via HDMI AVPlayer.availableHDRModes.contains(.hlg) returns false However AVPlayer.availableHDRModes.contains(.hdr10) returns true https://support.apple.com/en-us/HT208074 only mentions HDR10 and Dolby Vision support. Is there any way to play HLG video on AppleTV 4K similar to how it works on newer iPhones and iPads?
11
0
6.1k
Nov ’20
DYDL error for iOS app on mac running on Big Sur archived with Xcode 13.3 RC
When I archive my iOS app with Xcode 13.3 RC and run it on macOS Big Sur, the app crashes on launch with a DYDL error: Termination Reason: DYLD, [0x1] Library missing Dyld Error Message: dyld: Using shared cache: 331F452F-2BAE-3A64-AD52-0029F44B1379 dependent dylib '@rpath/SomeFramework.framework/SomeFramework' not found for '/private/var/folders/*/SomeApp.app/SomeApp'. chained fixups, seg_count exceeds number of segments The app runs fine on macOS Monterey and on iOS 13, 14, 15. The LD_RUNPATH_SEARCH_PATH in the build settings is correct and when inspecting the binary with otool -l the LC_RPATH entries are also correct. When archiving the app with Xcode 13.2.1, it runs fine on macOS Big Sur. Has anybody experienced the same and knows a workaround? I've filed a feedback: FB9951126
8
0
4.5k
Mar ’22
Use legacy and new top shelf extension
Is there a way to use different application extensions on different OS versions on iOS/tvOS?My use case is that I want to use the new tvOS 13 top shelf extension but keep using the legacy top shelf extensions for devices running tvOS 12.If I add a tvOS 13 top shelf extension target, I can set its deployment target to tvOS 13.0 and keep the deployment target of my app at tvOS 12.0.But if I also keep my existing legacy top shelf extension embedded. The legacy extension will be used on all devices running tvOS 12 or 13. The tvOS 13 top shelf extension is never used.
1
0
1.1k
Oct ’19
ASAuthorizationPasswordProvider stopped working
In earlier versions of tvOS 13 I could use ASAuthorizationPasswordProvider to allow users to login with their existing keychain credentials like this:let request = ASAuthorizationPasswordProvider().createRequest() let authorizationController = ASAuthorizationController(authorizationRequests: [request])I was using ASAuthorizationPasswordProvider without ASAuthorizationAppleIDProvider.But since a couple of tvOS 13.x updates, this stopped working.The ASAuthorizationControllerDelegate is always called with `authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error)` and `ASAuthorizationError.Code.unknown`.On the device an alert is shown with the message "account not supported" "your apple id cannot be used to create accounts for other apps."I tried it with different Apple IDs.The same code is working fine on iOS.
1
0
1.3k
Jun ’20