Issue: Safari app missing in iOS Simulator
I installed Xcode 5.0a on my mini at work, and launched the iOS Simulator hoping test our mobile css. Much to my dismay, Safari was not on the homescreen. Rebooting the simulator did not help. Restarting xcode, and later my mini did nothing either. Even dragging a link (such as https://www.google.com) into the simulator would cause iOS to give an error, indicating that there was no https handler at all. After nearly an hour of googling, I could not find anything about the missing Safari app. In my desparation, I was looking up everything even remotely related.
So, how do I get Safari installed on the iOS Simulator?
Solution: "File -> Reset Content and Settings..." caused Safari to reappear.
... and then suddenly it was right there in front of me. I saw an answer by Sihua in a pretty unrelated question that proved to be the very thing I needed:
Did you try "File -> Reset Content and Settings ..." in the simulator ? [...]
After doing this, Safari appeared in the tray as normal after the simulator rebooted. It was back to normal. The clouds parted, the sky turned blue again, the birds started singing... the curse had been lifted!
I could get back to work. But first, I wanted to post this solution in case there are some other poor devils out there beset by the same frustrating issue.
Related
I'm encountering a strange issue and was hoping to get some insight. When I build my Nativescript app on a Mac, and open it in the iOS simulator, it works. When I "prepare" the iOS app and open it in xcode, and run it on a simulator, it works. When I run it to my plugged in device, it also works. But when I take that project to the Appstore, and download it from there, I only get the splash screen, and then the app exits. Can anyone please shed some light?
Okay so I managed to figure out what the issue is, so I hope this will help someone in future:
Even though I added "Push Notifications" as a Capability(Signing & Capabilities) in XCode, I had to add the "Background Modes" there as well, and then select "Remote Notifications".
This resolved the issue for me.
In Xcode 11 GM Version can't launch Car Play audio application in the simulator.
Simulator stuck on the loading screen, then show "Unable to connect" error. Sometimes shows only black screen or crash on app launch.
While debugging, I see that methods from MPPlayableContentDataSource and MPPlayableContentDelegate won't fire. On Xcode 10 all work fine, so it's looks like some bug in new Xcode 11. Maybe someone knows how to solve this problem?
Thanks indeed.
I submitted a radar (FB7514196) to Apple.
You can see a copy of the radar here: https://openradar.appspot.com/radar?id=4997629368860672
Just installed Xcode 11.3 and I'm still having this problem. Contacted Apple via the Feedback Assistant and the response was:
Please ensure you're providing a prompt response to
MPPlayableContentDelegate and MPPlayableContentDataSource when you app
launches on the car screen. You have a few seconds after launch before
we show this timeout screen.
The first thing I do when starting the app is to set up this delegate and data source, so that's not the issue. Maybe something related to setting up CarPlay changed in the iOS 13 SDK.
Xcode 11 and Xcode 11.1 seem to contain a broken CarPlay implementation. Xcode 11.2 (beta-1) seems to work much better here. That said, the CarPlay simulator is finicky anyways and you should really use a real head unit to test your programs. I have found simply closing and reopening the CarPlay simulator to help with many issues, btw.
Still the same issue here with XCode 11.2.1
Anybody found a solution?
The CarPlay simulator has always been a total disgrace - for years!
I've Safari 8.0.6 with iOS 8.3 on my iPad, while debugging through Web Inspector on my Mac (10.10.3), the connection keeps on disconnecting (I don't see the device name under Develop menu upon disconnection) but can resume if I quit safari followed by a relaunch then I'm able to refresh and inspect remotely again.
There are a few things to try:
1. Test on the Xcode Simulator:
Open the iPhone simulator in Xcode and debug there with Safari Web Inspector.
Sidenote: Maybe you need to download the Safari Technology Preview
2. Reset your location and privacy settings on your device.
Settings > General > Reset > Reset Location & Privacy
3. Debugging on a real device
With this configuration it seems to work right now.
iPhone X, iOS Version 12.1.3
macOS Mojave Version 10.14.2 (18C54)
Safari Version 12.0.2 (14606.3.4)
Edit 2019.08.13
Settings -> Safari -> Advanced -> Check that Webinformation is toggled on.
It was suddenly toggled off and I couldn't connect via the Web Inspector. After toggling it on, it worked.
For other devices / versions, please read further down (Maybe you can decrease your build size).
EDIT: 2018.09.20
#Chet found out, the Web Inspector keeps disconnecting for too large JS files and map files
https://stackoverflow.com/a/52338231/4641479
Issue on Github:
https://github.com/google/ios-webkit-debug-proxy/issues/275
https://github.com/google/ios-webkit-debug-proxy/issues/274
I could confirm this on a real device with a production build (1.8 MB + 2.4 MB files), the Safari Web Inspector stays always connected.
Since for the development build it is not:
Before my web inspector very rarely worked and often just stopped working - but was still open. After the safari update the web inspector opens and closes immediately. If you encounter such problems..
This will work:
Step 1. Get the latest Safari Browser
Safari: 11.1 (12605.1.33.1.2)
https://developer.apple.com/safari/download
macOS Sierra and OS X El Capitan (I assume macOS high Sierra is also supported)
Maybe you need to download the Safari Technology Preview
Step 2. Reset your location and privacy settings
On your device go to:
Settings > General > Reset > Reset Location & Privacy
Source: https://forums.developer.apple.com/thread/87181
Step 3. Connect your device
Open Safari on OS X
If you had connected your iPhone device with an usb cable, disconnect it first.
Now plug it in.
On OS X Safari go to:
Develop > Device name > Apply for development
Now on your phone there is a permission question. Choose trust and now you can choose the open tab on your devices safari and debug.
Happy debug!
Now the web inspector stays connected.
Do you have a lot of backgrounded apps running on your iPhone? Kill them and try again.
We showed this issue to Apple developers at WWDC, and they suspected it was due to memory constraints on the iPhone. Sure enough, killing most of our backgrounded apps resolved the issue for us.
Working Solution (as of 24th Mar 2020)
Well, after so many trials and opening thousands of blog posts to figure out a solution, I managed to get it working without a single case of failure.
For me, this has been always a problem with my Ionic+Cordova application.
My subconscious mind started to think about this problem when I saw that this issue (of Safari getting disconnected) is not there when I run a plain simple Cordova or Ionic application. And then suddenly, I tried another thing and it worked.
Basically, the Safari web inspector disconnects when the size of any files are too large (not sure about the limit). Maybe, some image, some script, and CSS. In my case, it used to because of the JavaScript & their source map files.
So, when I started to run my iOS application without source maps, the problem is gone. For that, all I had to do is to pass --source-map=false to my ionic cordova commands like:
ionic cordova run ios --source-map=false
ionic cordova run ios -lc --source-map=false
I wrote a small article about this to elaborate this in detail https://medium.com/wizpanda/a-small-tip-to-speed-up-development-with-angular-or-ionic-d5764f639c0c
Original Answer
Most of the answers listed here worked for me for a while but after a few hours they also stopped working and my Safari web console again keeps disconnecting as it opens.
Other few options that worked for me:
Option 1 - Empty Cache From Safari
Safari on MacOS -> Develop -> Empty Cache
Option 2 - Clear Trusted Computers
On iOS Device -> Settings -> Developer -> Clear Trusted Computers then reconnect the USB cable and then try to debug again
Option 3 - Make the debugger fool (as of 14th Jan 2019)
This solution is working for a long time now. Since this is an issue related to connection between iOS & Mac so I opened my Console app and just kept my iPhone selected. (This is somehow kept my iOS device connected to my Mac)
Then opening the Developer's console on Safari worked fine for me without disconnecting.
Option 4 - Run via Xcode
This is also a kind of workaround and a hack to see it functional. You can basically prepare your iOS app by ionic cordova prepare ios and then run the app using Xcode and deploy it to your iPhone.
At least, I'm able to see the console logs and sometimes, it even works with Safari web inspector.
Option 5 - Run on iPhone simulators
I think this is the most working solution. This option is suitable when your system is not running too many applications as firing a simulator suckup a good amount of system resources.
Basically, instead of running your app on a real device, run your app in an iPhone simulator via Xcode and debug it normally in your Safari web inspector and this problem will not occur.
This is probably because the files being transferred to Safari inspector is from the system itself.
Sounds strange but it may be happening due to the battery being full triggering a disconnect: https://forums.developer.apple.com/thread/92290
The disconnection seems to occur when the battery of the Iphone is full. (So for the moment we turn the flash and the camera on to kill the battery while inspecting ...)
This is only necessary for physical devices. Physical devices can be forcefully disconnected by Safari if the device's battery is full. ("Full battery? Well then, let's just disconnect you as you don't need to charge anymore -- and there goes your debugging session too...")
You will want to select Connect via Network in Develop > [device], and then attach your debugger to the page you want to debug. If you do not have the Develop menu in Safari, go to Safari > Preferences > Advanced and select Show Develop menu in menu bar.
If this doesn't work, you may try upgrading your OS/Safari through the App Store first.
If things are still breaking, disconnect your iOS device. Go into your iOS device into Settings > Safari > Web Inspector and turn it off and then back on. Force quit out of Safari. Re-plug in your iOS device and start up Safari again and re-attach your iOS device through Safari > Develop menu.
Closing XCode first helped for me.
This plagued me for a long time with very inconsistent behaviour, here are a few things I have found that help, I also wrote a blog post on this here.
Update both mac safari and ios - I have found after having the latest of both versions it started working for me, there could be debugging incompatibilities between Safari's.
Check that web inspector in ios is enabled - It has been known that this setting can be switched off after an upgrade, check in settings > safari > advanced > web inspector.
Check the port you are connected to - I have had mine plugged into a cheap hub / via apple keyboard/monitor hub and found that going directly into the mac works much better.
Are you using a good quality cable? - I have found that better quality / official cables that aren't worn out have better reliability when in debug.
Other notable observations - other people have commented that making sure cookies are enabled in safari, enabling private mode and trying whilst Xcode is open have affected the reliability of this, although I haven't seen this myself it may help others to try.
I can't say I have a solution, but a step in the right direction.
I tried using ios-webkit-debug-proxy so I can use the Chrome Dev Tools instead of Safari Dev Tools.
Note, in order to get it to work, I can to upgrade my iOS to the latest 11.4.1 and MacOS 10.13.65, then reinstall the latest versions:
brew update
brew install ios-webkit-debug-proxy
brew reinstall --HEAD libimobiledevice
brew reinstall -s ios-webkit-debug-proxy
ios_webkit_debug_proxy
After running ios_webkit_debug_proxy, I was able to try to connect through chrome://inspect and it disconnected immediately again:
Listing devices on :9221
Connected :9222 to Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)
Invalid packet header 0x1ffffff91ffffffa0ffffff9d == .... == 26321053
Disconnected :9222 from Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)
However, we have a clue! Invalid packet header. Sounds like a lower level bug somewhere. Not sure where to submit this but to though...
The magic solution worked for me:
Reboot your MAC
Reboot your iPhone
09-07-2020
Still this issue on Latest MacOs (Catalina 10.15.5) on Safari (13.1.1)
Solution on Ionic/Capacitor:
ionic cap run ios -l --external --source-map=false
The most recent Safari Technology preview appears to have solved it for me.
https://developer.apple.com/safari/technology-preview/
MacOS Mojave / Catalina Solution
For me the issue started right after I upgraded to the new macOS Mojave, this might have been mentioned somewhere above but for me I just needed to download the new "Safari Technology Preview" app that is built for Mojave.
Safari Download Page
https://developer.apple.com/safari/download/
Direct Download for Mojave
https://secure-appldnld.apple.com/STP/041-71285-20190604-6d0dcb17-07e5-40a0-b418-dba732cefe64/SafariTechnologyPreview.dmg
For me using a different adapter and cable solved the problem.
Every time you connect, it should ask for "Trust this device" like prompt on smartphone, if not then it's the cable/adapter issue.
When using a content-blocker (e.g. 1Blocker) on your iOS device, make sure it is disabled for the domain you want to debug.
Disabling 1Blocker stopped the Web Inspector (Mac) from closing immediately after opening it, and allowed me to get back to work.
I know there's a lot of answers already, but I wanted to post because none of them worked for me just now. But, my phone's battery was in "low mode" ... but since I'm plugging it up for development, I didn't think that was a big deal. But, going into settings on my phone and turning off low battery mode fixed my problem. Now safari doesn't disconnect.
Just wanted to post that in case someone runs into this with a low battery.
Working solution for ionic app:
ionic cordova build ios --source-map=false
Capacitor, Ionic, Cordova
rm -rf platforms/ios/**/*.map
I've been seeing this issue when using live preview in Capacitor while building an Ionic Angular project on macOS Monterey previewing on iPhone Xs. Here are a few ways I can get over this bug and continue development...
Make sure you're using Safari Technology Preview and not the regular version of Safari.
Close and Re-Open Safari Technology Preview if it continues. You could also try inspecting using regular version of Safari after installing Safari Technology Preview. It may work for debugging almost as well.
On your device, open the app switcher and close all background applications before starting development on your app.
Toggle 'Connect via Network' in Safari on your computer by using: Develop > Device Name > Connect via Network in the Safari menu.
Disconnect and reconnect the lightning cable of your device. Make sure it has a steady firm connection to the computer. Off-brand cables can cause intermittent development issues.
Quit your app, go to the app switcher and force close your application by swiping it away. Then re-open it using the app icon in the launcher. Try inspecting it again.
Try rebooting your computer and rendering your app again. After a lot of up-time there may be some built-up log data that needs to be dumped.
I just updated my xcode to work with ios7. Now whenever I make a new app, even if its set to build for ios7, I get an error in the simulator when running. It says that the install failed, even if I just made the project and haven't coded anything into it yet. The simulator also shows a black screen. I have tried the reset content, and it didn't work. I saw something somewhere saying to delete the Iphone Simulator folder in application support, but no such folder seems to exist. What can I try to do?
Update--
With some additional research, I found that Iphone Simultor is in the Xcode.app now, but I don't know what to delete. There are many files under the iPhone Simulator Folder. If I delete the actual app, it just doesnt open. Any ideas?? I dont even get an iphone on the screen, just a black window...
Update 2:
Even when I just go to open developer tools -> iphone simulator
it still gives me just a black screen....
Update 3
I just re-installed X-code, and all works now! Strange....I have no idea what happened...But I thought I would let y'all know for others who have similar issues.
Deleting the iOS Simulator folder of the iOS version in question in
/Users/xxx/Library/Application Support/iPhone Simulator
helps, but then you always have to repeat all the settings you made in the simulator (language, for example). Try to press the home button and then delete your app like you do it on a real iOS device. You should then be able to install it again.
This seems to be a known issue.
When simulator open - Go to iOS simulator tab -> reset content and settings..
Work for me.
Perhaps this answer will help?
The simulator should be in this folder:
/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iOS Simulator.app
Make sure any #try and #catch(NSException *exception) {} blocks are not commented or are working properly.
This is a version mismatch between your OS X version and your Xcode (iOS simulator)
and it seems that you have upgraded your OS X so Xcode needs to be upgraded as well, Check the versions that match with each other.
You need to upgrade your Xcode which will upgrade iOS simulator.
Good Luck,
I have just finished installed xCode 4.5 and have been trying to understand the new simulator. I want to test my app in the old screen size and new screen size. However when under the simulator I go to hardware and change the phone size to the 4 inch size, it changes the simulator to take up the full screen, has no home button, is zoomed in, and I have to scroll to navigate which is really frustrating and annoying.
From this
To this
Could someone tell me if this is meant to happen? I want to maintain the normal iPhone look with the simulator, that zoomed in scrollable simulator is terrible, looks horrible and makes debugging a pain. I am sure Apple would not allow something this poor looking to be the normal look for the simulator so I am guessing I am doing something wrong.
The other problem with it is, if I am on the home screen where I can see a list of custom apps under normal iPhone screen size, then change it to the 4 inch simulator screen size, the custom apps I installed on the simulator are not showing for some reason.
Any help would be much appreciated!!
Edit:
I found I change the scale of the simulator under window and changing it to 50 or 75%. However one problem remains, why is there no home button in the iPhone 5 simulator?
What computer are you working on ? I've got a 13'' MacBook and the same thing occurred to me. Some topics say it is related to your screen resolution, and if your screen is "too small" then the simulator won't see the need in a frame representing the physical device. See Nathan Gopen's answer in XCode 4.3.1 iPad simulator. (I also noticed that the frame disappears when you re-scale standard iPhone to 75% or 50%.)
If you need the home button you can find it in Hardware > Home Button, or Shift+Cmd+H. Yeah, I know, it sucks...
This Worked for me:
Go to Simulator Menu
Go to Hardware
Click Device
Click IPhone
This will restore the iPhone Simulator frame.
What worked for me was...
Go to XCode,
Open the main XCode menu option
Click on "Open Developer Tool"
Click on "iOS Simulator"
Change to the simulator you want by going to the "Hardware" menu.
Close the simulator
Run your project again.
XCode was crashing on me when I switched to the non-retina iPad option and this was my solution.
The simulator seems to remember the last hardware option that was chosen.
I don't think it's related to the screen resolution. I'm running it on 1920x1200 and it's the same. I guess it's simply to reduce effort for Apple since it's not essential for development to have a nice looking simulator. But yes, I agree I loved to see a virtual iPhone as simulator. And it was quite easier to produce screenshots of your Apps for your website.
Zooming or scrolling is of course not required on a 1920x1200 screen.
This just happened to me and I did spend a while trying to figure this one out.
By setting the scale to 100% my issue got fixed as Cal said above.
I think this is related to retina display setting ...
When I started the iOS simulator on my macbook pro (w/rd), the iPhone frame came up. I moved the frame over to my attached monitor and it stayed as an iPhone frame. I shut xCode down.
When I restarted, the iOS simulator started up on my attached monitor and lacked the phone frame, just showing the screen. Scaling up or down did not matter.
I moved the unframed screen over to my laptop screen again, and shut down the simulator. When I started it back up, it started on the laptop screen with the phone frame.
I don't think it is related to resolution so much as retina display.
Not sure if this is long term solution, but the following steps helped me.
Go to Windows >> Scale
Select different options as per your wish (I chose 75%)