I needed to run a long test to see what's making my app crash. So I set the Mac to not sleep and I ran the app on the iPhone connected via USB overnight. In the morning, I found that the iPhone had disconnected during the night.
I looked for in Console and Xcode for device logs and I found there were none at all on the phone, therefore no history of what happened during the night. Logs began after the moment I reconnected the phone to the Mac.
I downloaded the app container and found no useful evidence of what happened.
iOS is 12.4 and Xcode is 10.3.
What can be done to ensure there is some evidence of what caused the crash? Other than filling the app with fprintf's going to a custom log file. Also I am using Fabric.
Do the same thing again, but this time with a camera looking at the PC. Maybe you can grab some evidence from the recording next day. Modern solutions for modern problems.
Go to Settings -> Touch ID and Passcode
Check if USB Accessories has been turned off. Your device may have disconnected then failed to reconnect due to this feature restricting access to the device if it is disconnected for more than an hour.
Change this setting, replace your cable or use a different USB port then try running it again.
I'm using Xcode 10.1, and I don't have a checkbox whether I want to connect through network or not on my device page (which was there in Xcode 9 and Xcode 10 beta). Search "connect via network xcode" on google images if you don't know what I mean.
However, I must debug the offline flow of my app (which is written in React-Native btw). Not just no-internet-connection, but turning off wifi and mobile-data, which will trigger a status change. By using the developer settings of the iPhone, I can make every call fail (100% loss), but cannot change the internet-status of the phone.
So I want the debugger to stay connected and either be able to:
debug the old-school way through the cable (if I turn off internet now, I get a red error screen and nothing is possible anymore), so I can disable wifi and mobile-data,
or simulating that status change on the phone.
Btw, I cannot use a simulator, since the app requires Bluetooth.
Thanks in advance!
Edit:
The checkbox is not there for older iPhone devices. With iPhone 7s, I do see the checkbox "connect via network". But enabling or disabling does not change the fact that your iPhone needs internet to debug. If I disable internet on the phone I get the following error:
Ok, I've found the problem. We are testing on a iPhone5, which is no longer officially supported by Apple. Which means that Apple has decided to cut features for iPhone5 so you would buy a new one (wonderful strategy =/). Hence debugging with a cable is no longer supported on iPhone5.
We tested with a iPhone6 from a colleague, and everything works fine.
Edit:
Altough the checkbox is there, and I can disable wifi for connection... The moment I turn off internet on the phone, the app crashes and says: "Runtime is not ready for debugging: make sure packager runtime is running"... so no solution yet...
My phone is listed as an ineligible target in Xcode and out to the side it says (no paired Apple Watch).
My Apple Watch is registered under iOS Devices. I can see the UDID. The watch has watchOS 2.0 installed and my iPhone 6 has iOS 9 installed. The iPhone pairs just fine with the watch and I can install apps.
I've tried rebooting both the watch and the phone. I've tried rebooting Xcode. I tried creating a new scheme in Xcode but it still shows (no paired Apple Watch). I can choose Product/Destination and the app will show up on the phone, it just won't install the watch app...just sits there saying "Installing...".
I had paired my watch with a new phone and run in to this problem. I removed all files in ~/Library/Developer/Xcode/watchOS DeviceSupport/ and it solved it!
2022, 5 year anniversary: For the past 6 months, I consistently have to sit through one hour of "Preparing Apple Watch for development via iPhone" even when I'm not even debugging a Watch app. Needless to say, this also makes it impossible to run apps on device via Xcode. After about 3 hours (basically half my workday) it starts to work. Once I remove the app for testing, or unplug the iPhone, I have to wait a few hours again. Never in my life have I felt so useless as my job at this point basically consists of watching a loading indicator for hours until the process is done - only for the whole thing still not working most of the time.
Fun fact: Apple on Twitter claims they use the same devices and tools for their Watch apps.
2021: All Quiet on the Western Front. It's been 4 years since my first response. I've now had a good run during December and the first 2 weeks of January. It was so good that I haven't closed the simulator a single time and kept my iPhone connected and never turned off my mac. This worked for 3 weeks but then my iPhone ended up in a boot loop and restoring fails. I bought a new iPhone and now I also can't really connect anymore. See y'all in 2022 :)
2020: At this point I can't even get WCSession to send data on the Simulators anymore. Message from Watch to iPhone with replyHandler works, message from iPhone to Watch fails with WCErrorCodeWatchAppNotInstalled. Every day starts with rebooting numerous times and deleting and setting up new iPhone + Watch combinations. Tried on a freshly installed macOS with my friend's devices and of course no luck. But it's clearly my fault. Submitting a bug report doesn't do anything as they only keep telling you that everything is working on their end and they will close this ticket now. I only wanted to help.
2019: New iPhone, even worse. Now, every single component in my development has changed since 2017 and I'm still stuck targeting the simulator with every build. Apple, why?
2018 II: nothing works for me anymore. Contacted Apple loads of times and Apple Watch seems to have moved to Playground's neighborhood as it's just loading/running but never really running. Bought a second Mac, new project, nothing works. Sad.
2018: The last couple of days I have been really successful doing the following:
On your iPhone:
turn off wifi
turn off bluetooth
turn on wifi
turn on bluetooth
On your Watch:
turn on flight mode
deactivate flight mode
Most of the times it didn't take longer than 30 seconds to get the connection back on track. I think it's the "Watch flight mode"-thing but I never change a (somewhat) running system so this will be my procedure from now on. My 2017-reply still seems to be of help to some people:
2017: If it SOMETIMES shows, and often doesn't, it might be due to the fact that you closed iTunes
I noticed what I often did after reconnecting: closing iTunes. Immediately, the watch turned to be "unpaired". Reconnecting the USB cable but leaving iTunes open has helped me since.
What worked for me is to go to the WatchKit App target and update the Team with the proper account. Once I did that, my device showed as eligible.
Open the camera companion app on the watch. For me this works. Seems like the app starts a phone connection.
It seems that you need to tap on the "Trust this computer" message on Apple Watch. This solved my problem. Also check if XCode displays the message "Indexing..." or "Loading symbols...": you need to wait until the operation is over.
It looks like a bug in Xcode!
Go to ~/Library/Developer/Xcode/watchOS DeviceSupport/ and create a folder named "Watch1,2 2.0 (build number)" and for 'build number' use your watchOS build number. Inside this folder create another folder named "Symbols".
So for the latest build: ~/Library/Developer/Xcode/watchOS DeviceSupport/Watch1,2 2.0 (13S5305d)/Symbols.
Maybe clean & restart Xcode.
For me it was an issue of trusting the computer from the watch. I had to reboot my watch to get the "trust this computer" request.
In my case I believe it was because I had Connect via network enabled for the iPhone that's paired with my new watch.
Upon disabling the wireless connect feature, then connecting the iPhone to my mac via cable, the watch appeared in the Devices list.
After getting the UUID to register with the Developer Center I re-enabled Connect via Network and the watch was no longer listed on the Devices screen. When I connect the phone via cable, however, the watch info appears.
So if you're using wireless connect, try just plugging the device in via cable and hopefully you'll see your watch in the list. Good luck!
I had to delete my Apple ID from the Accounts tab in Xcode preferences and then re-add it.
What worked for me is just waiting for about a minute. There was no progress bar in Xcode, just wait.
For me helped open iTunes at the MAC and leave it open.
Xcode 9.4.1
Check the phone is connected to the same wifi network as the computer.
I've just spent a few days struggling with this, trying the solutions above. Switched networks, waited a minute, now it works again. Gah.
I have four wifi SSIDs in my home (old house, thick walls, one router won't cover it properly) and it turned out the computer was choosing one, and the phone another.
I have the exact same setup and had the same problem. What seemed to work for me was just unpairing and pairing the watch again. Then Trust this computer on the watch and Xcode started to list it in the menu.
It seems that I updated the watchOS2 beta 5 on top of 1.0.1 which was paired earlier and it just needed to be re-set for watchOS2.
What worked for me was to open Xcode's Projects window and click the Delete button next to the Derived Data line for the currently open project. After that, the target automatically switched to show [My iPhone Name] + [My Watch Name].
My setup: Xcode 7, iOS 9 (public release), and watchOS 2 beta.
Open Watch app on device, scroll down to your app, and make sure to enable show app on apple watch
Setting Correct Provisioning profiles | Certificates | Team, then restarting Xcode worked for me.
You must have connected your Apple Watch with you iPhone by bluetooth, wifi connection won´t work for testing...
I really struggled with this problem but this helped me:
Fix steps :
Unpair my watch
Reboot both iPhone and apple watch
Pair them again,and setup my watch as a new one
Plug (unplug first) iPhone to Mac
On apple watch, say Trust the computer when it asks
Unplug and plug again
Close and open XCode
Open the project and wait a few seconds
I may have had a breakthrough....I turned off WIFI on my Mac and it instantly found the watch 😱
This worked for me (Xcode 11.3.1) :
Open Devices from Xcode
Disconnect iPhone from Mac
Disable bluetooth on iPhone
Re-connect iPhone to Mac
Verify iPhone is showing in Devices.
Turn on bluetooth on iPhone, wait to see that watch is connected on iPhone.
Look in Devices -> your iPhone -> Paired watches -> wait for the watch info to completely show.
At this point I was able to see watch in Xcode.
In some cases also needed to restart Watch & Phone as well.
This worked for me
1. Quit Xcode.
2. Disconnect iPhone
3. Remove cache files at /Users//Library/Developer/Xcode
4. Run Xcode.
5. Connect iPhone again
6. Xcode will start to download the symbol file
Just reconnect my iPhone to my Mac is solved my problem. When i reconnect my iPhone, xcode installed itself missed symbols automatically.
I had a similar issue where Xcode was not detecting my paired watch. Somehow, the beta provisioning profile had managed to get installed onto my phone and for some reason Xcode could not detect the paired watch. As soon as I deleted the provisioning profile, Xcode started to pick up the paired watch.
Creating a new watchOS project lead to download of symbols to resume and finish.
I unplugged the iPhone before "Processing symbol files" operation was finished. So Apple Watch never showed up again.
XCode 9 (beta 4). iOS 10 (beta 4). watchOS 2.2.2.
I just waited several minutes and then - it worked by itself.
WatchOS 4.1, XCODE 9.2.
The solution that worked for me with XCode 10.0: trash the whole Xcode folder in ~/Library/Developer/Xcode, removing only the watchOS DeviceSupport was not enough
New update to this issue. I have recently buy the ray wenderlich book for Watch OS and I have had this problem.
After testing a lot of things, and before delete any files, my working solution is this:
On MAC with Xcode open and with the issue scheme loaded. iPhone plugged in and watch turned on too.
1) On MAC turn off wifi
2) On MAC turn on wifi
3) On MAC turn off bluetooth
4) On MAC turn on bluetooth
I know this solution is above, but is the only way it has worked for me. Hope it helps to any dev too.
Check that Bluetooth is enabled. I restarted my Mac, my phone and my watch and that didn't help. When I looked in settings on the watch I found that Bluetooth was disabled.
In my case, rebooting the watch did not work, but after rebooting iPhone it did.
Xcode Version 12.2 (12B45b) seems to fixed all issues regarding the app transfer from your mac to your apple Watch.
I have read CLLocationManager kCLErrorDomain Codes? as well as Apple Docs
I check to make sure ranging is available before calling startRangingBeaconsInRegion: and I am also checking if ranging is available while in the locationManager:rangingBeaconsDidFailForRegion:withError: method. Returns true both times.
When I get the set of monitoredRegions, my beacon is in the set (so registering for monitoring is working).
I have read that error 16 can mean ranging is unavailable, bluetooth could be off, location services could be off, airplane mode could be on, I have checked them all and all are available and running (obviously not in airplane mode).
What could be causing the ranging to fail, every time I run the app?
It seems that I started to face this issue after I updated my device to iOS 7.1 (iPhone 5S). rangingBeaconsDidFailForRegion: gets called with error.domain equal to #"kCLErrorDomain" and with error.code as kCLErrorRangingUnavailable (16) (even though Airplane mode is not on and Bluetooth is up and running).
I followed davidgyoung's advice to just boot (I did a hard boot pressing Home + Power until the device shuts down and displays the Apple logo, but also a normal boot works) the device, and now it seems to work correctly.
This appears to be a bug in iOS 7.1 and iOS 7.1.1, see here https://stackoverflow.com/a/22949187/1461050. The only workaround - for now - is to reboot the device.
Apple has now released iOS 7.1.2, which should fix this problem (awaiting for confirmation).
Just to eliminate any possibility that it could be something in your code, try a reference app like my Locate for iBeacon. If it also does not work, you probably have an OS or hardware problem.
To troubleshoot this, first reboot your phone and try again. Then try pairing to a regular Bluetooth device (headphones, Mac, etc). If regular Bluetooth pairing works, it may be a Bluetooth LE issue.
Your iOS device must be either an iPhone 4s+ or an iPad 3+ (needed for BLE).
The problem is closely related to the CoreBluetooth Unknown Error 1309.
In some circumstance, seems that the CoreBluetooth Stack become corrupted and the only solution is to reboot the device.
There're plenty of users that are reporting such behaviour. We've fired a bug to Apple Radar and we're waiting for response.
You can also report the problem to Apple Radar so that they will notice this bug.
I'd like to understand why, and find a solution obviously. I can't figure it out, given the console disappears as soon as the device reboots and is then reset when it comes back from the reboot. So I don't have any clue of what's going on there.
iphone4, ios 5.0.1 installed, jailbroken when the latest redsnow & untethered JB. I tried in safe mode, same thing.
I noticed that everytime I connect the phone osx mounts a developerdiskimage volume while xcode is displaying "checking DDI symbols", and after that then the phone is considered valid for dev by xcode. After the phone just rebooted, it's shown as invalid for development in xcode, until I unplug / replug it. I don't think I ever noticed that before, could it be related?
With the new ios 5.1.1 jailbreak out. You might want to revisit it again. I had a similar problem where I could mesure leaks but trying to mesure CoreAnimation or anything else would restart the device.