There was some discussion on this earlier, but all the posts basically summed to "once the watch app has run your phone app will know". That doesn't help my use case: I would like to let the user of the phone app know (with an alert) that they can now access the app from their watch. I specifically want to alert the phone app user who has never opened the watch app as they may not even realize that there is a corresponding watch app already on their watch.
WKInterfaceDevice.currentDevice().screenBounds.size returns (0.0, 0.0) on the phone simulator if External Displays is set to Disabled, but actual devices (the ones I've tested) return (156.0, 195.0) even though no watch is paired or has ever been paired, so that cannot be used for this purpose.
Has anyone found a reliable method of discovering whether a watch is paired without the watch app ever haveing been run? I would even settle for "has ever been paired". I just don't want to alert the 99% of users who do not have a watch.
If you are using watchOS 2 I believe you could use the WatchConnectivity framework. Specifically:
WCSession* session = [WCSession defaultSession];
if (session.isPaired) { ... }Documentation states isPaired -> /* Check if iOS device is paired to a watch */
There is also:
/ Check if the user has the Watch app installed */
@property (nonatomic, readonly, getter=isWatchAppInstalled) BOOL watchAppInstalled __WATCHOS_UNAVAILABLE;