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.
Here's the behavior:
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.
Here's the Radar:
rdar://FB8953635
openradar.appspot.com/radar?id=5063321564741632
Here's the behavior:
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.
Here's the Radar:
rdar://FB8953635
openradar.appspot.com/radar?id=5063321564741632
The documentation is unfortunately not clear on this: supportsHaptics means "supports internal haptics", which currently distinguishes iPhones from all other device types. Since all device types which support the CoreHaptics framework (iPhone, AppleTV, Mac) also support GameControllers, you should use the existing documented system for establishing a CoreHaptics connection with an external controller to determine if there is one or more available.
Thank you for taking the time to file a radar - this makes such issues much easier for us to track.
Thank you for taking the time to file a radar - this makes such issues much easier for us to track.
DS