CHHapticDeviceCapability.supportsHaptics returns false with paired controller

Originator:william.c.henderson
Number:rdar://FB8953635 Date Originated:12-26-2020
Status:Open Resolved:No
Product:iOS Product Version:14.2
Classification:Incorrect Behavior Reproducible:Yes
 
I initially encountered this problem by trying to play games that supported controller haptics, but found that I could only get them to work on my iPhone – not my iPad Pro. When I explored the issue, I determined that this is likely because Core Haptics behaves incorrectly in this case.

When using an iOS device that doesn't support haptics (ie iPad Pro) connected to a paired controller that supports haptics (ie PS4 Dualshock), CHHapticDeviceCapability.supportsHaptics returns false.

Steps to reproduce:
1. Start with iPad paired with Dualshock controller on iOS 14.2 (see attached).
1. Download "HapticControllers" sample code.
2. Use app to verify that haptics work on the controller, as expected
3. Add the following code to viewDidLoad, appDidFinishLaunching etc (or use the attached)
        var supportsHaptics: Bool = false
        let hapticCapability = CHHapticEngine.capabilitiesForHardware()
        supportsHaptics = hapticCapability.supportsHaptics
4. Using the debugger, verify that supportsHaptics is false after running.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!