Post

Replies

Boosts

Views

Activity

Detect if user is running Voice Control
Our users are using Apple's native Voice Control feature: https://support.apple.com/en-us/HT210417 We want to enhance our accessibility experience by adding some additional voice controlled dialogs that show up specifically when Voice Control is enabled. It can be determined if other Apple accessibility features are turned on via a check like UIAccessibility.isVoiceOverRunning, however there is no option for Voice Control (note, different than Voice Over). How can I detect if a user is running Voice Control or not?
1
3
1.7k
Mar ’24
Voice Control does not work with any connected bluetooth devices
Our accessibility users are using Apple's Voice Control feature: https://support.apple.com/en-us/HT210417 Voice Control does not work with bluetooth devices. It doesn't seem to be natively supported by Apple and only the iOS device's microphone works. Airpods, Bose Headphones and Jabra BT devices do NOT work. Is there a way to get our application to run with Bluetooth devices? The current experience doesn't work with our accessibility users as they physically are unable to move closer to the device so bluetooth headphones are critical for their user experience to work correctly.
0
1
854
Sep ’23
Data equality checks have changed in iOS 17
Data equality checks have incorrectly changed on iOS 17. Step to reproduce: Run XCTestCase file in iOS 16. It will pass. Run XCTestCase file in iOS 17. It will fail. Suspected Cause: In iOS 17, Data has changed how it performs equality. Previously equality did not care about ordered keys, now it does. I've noticed if I modify the test case to use a JSONEncoder setting of encoder.outputFormatting = .sortedKeys, then it passes. Reason this is a bug: This is unexpected and changed behavior. Equality should not care what the ordering of the keys are when comparing one data object to another data object. Ordering is irrelevant for a JSON object. It's the content that matters. This will cause a huge regression for us in our previously released app if this hits production. XCTestCase: import XCTest final class JSONDecodingTest: XCTestCase { struct Address: Codable { let street: String let city: String let state: String let postalCode: String } struct OrderItem: Codable { let productID: String let productName: String let quantity: Int } struct Order: Codable { let orderID: String let totalAmount: Double let items: [OrderItem] } struct User: Codable { let id: Int let username: String let email: String let address: Address let orders: [Order] } struct RootObject: Codable { let user: User } func testData() throws { let object1Json: String = """ { "user": { "id": 12345, "username": "johndoe", "email": "john.doe@example.com", "address": { "street": "456 Elm St", "city": "Somewhere", "state": "NY", "postalCode": "54321" }, "orders": [ { "orderID": "A987", "totalAmount": 75.99, "items": [ { "productID": "P123", "productName": "Widget", "quantity": 2 }, { "productID": "P456", "productName": "Gizmo", "quantity": 1 } ] }, { "orderID": "B543", "totalAmount": 32.50, "items": [ { "productID": "P789", "productName": "Thingamajig", "quantity": 3 } ] } ] } } """ let encoder = JSONEncoder() encoder.outputFormatting = .sortedKeys let itemData = object1Json.data(using: .utf8)! let item = try JSONDecoder().decode(RootObject.self, from: itemData) let data1 = try encoder.encode(item) let data2 = try encoder.encode(item) XCTAssertTrue(data1 == data2) } } I've filed feedback here: https://feedbackassistant.apple.com/feedback/12995492 I noticed that in WWDC, Apple said they rewrote the entire JSONEncoder & JSONDecoder implementations. This is a massive regression: https://developer.apple.com/videos/play/wwdc2023/10164/
3
1
2.8k
Aug ’23
Detect if user is running Voice Control
Our users are using Apple's native Voice Control feature: https://support.apple.com/en-us/HT210417 We want to enhance our accessibility experience by adding some additional voice controlled dialogs that show up specifically when Voice Control is enabled. It can be determined if other Apple accessibility features are turned on via a check like UIAccessibility.isVoiceOverRunning, however there is no option for Voice Control (note, different than Voice Over). How can I detect if a user is running Voice Control or not?
Replies
1
Boosts
3
Views
1.7k
Activity
Mar ’24
Voice Control does not work with any connected bluetooth devices
Our accessibility users are using Apple's Voice Control feature: https://support.apple.com/en-us/HT210417 Voice Control does not work with bluetooth devices. It doesn't seem to be natively supported by Apple and only the iOS device's microphone works. Airpods, Bose Headphones and Jabra BT devices do NOT work. Is there a way to get our application to run with Bluetooth devices? The current experience doesn't work with our accessibility users as they physically are unable to move closer to the device so bluetooth headphones are critical for their user experience to work correctly.
Replies
0
Boosts
1
Views
854
Activity
Sep ’23
Data equality checks have changed in iOS 17
Data equality checks have incorrectly changed on iOS 17. Step to reproduce: Run XCTestCase file in iOS 16. It will pass. Run XCTestCase file in iOS 17. It will fail. Suspected Cause: In iOS 17, Data has changed how it performs equality. Previously equality did not care about ordered keys, now it does. I've noticed if I modify the test case to use a JSONEncoder setting of encoder.outputFormatting = .sortedKeys, then it passes. Reason this is a bug: This is unexpected and changed behavior. Equality should not care what the ordering of the keys are when comparing one data object to another data object. Ordering is irrelevant for a JSON object. It's the content that matters. This will cause a huge regression for us in our previously released app if this hits production. XCTestCase: import XCTest final class JSONDecodingTest: XCTestCase { struct Address: Codable { let street: String let city: String let state: String let postalCode: String } struct OrderItem: Codable { let productID: String let productName: String let quantity: Int } struct Order: Codable { let orderID: String let totalAmount: Double let items: [OrderItem] } struct User: Codable { let id: Int let username: String let email: String let address: Address let orders: [Order] } struct RootObject: Codable { let user: User } func testData() throws { let object1Json: String = """ { "user": { "id": 12345, "username": "johndoe", "email": "john.doe@example.com", "address": { "street": "456 Elm St", "city": "Somewhere", "state": "NY", "postalCode": "54321" }, "orders": [ { "orderID": "A987", "totalAmount": 75.99, "items": [ { "productID": "P123", "productName": "Widget", "quantity": 2 }, { "productID": "P456", "productName": "Gizmo", "quantity": 1 } ] }, { "orderID": "B543", "totalAmount": 32.50, "items": [ { "productID": "P789", "productName": "Thingamajig", "quantity": 3 } ] } ] } } """ let encoder = JSONEncoder() encoder.outputFormatting = .sortedKeys let itemData = object1Json.data(using: .utf8)! let item = try JSONDecoder().decode(RootObject.self, from: itemData) let data1 = try encoder.encode(item) let data2 = try encoder.encode(item) XCTAssertTrue(data1 == data2) } } I've filed feedback here: https://feedbackassistant.apple.com/feedback/12995492 I noticed that in WWDC, Apple said they rewrote the entire JSONEncoder & JSONDecoder implementations. This is a massive regression: https://developer.apple.com/videos/play/wwdc2023/10164/
Replies
3
Boosts
1
Views
2.8k
Activity
Aug ’23