How to simulate Apple Watch disconnection from phone - ios

Is there any way to simulate the phone being disconnected from the Apple Watch - on the iOS Simulator?
The only thing I can think of so far is uninstalling the phone app while the watch app is running.
I'd like to know as I haven't seen a definitive answer on what the behaviour is when the phone disconnects e.g. what happens to data on screen on the watch - is it removed or does it stay there read-only.

I can't find the post on the Apple Developer forums right now, but all indications are that you can't test that scenario in the simulator.
EDIT: Found it. This thread should help a bit: https://devforums.apple.com/thread/254576?tstart=0

Just close the iPhone simulator once the simulators open and show paired connection

Related

How to detect launch app via MFi device on iPhone

Could someone tell me "How to detect launch app via MFi device on iPhone"?
Apple announced several major changes for a new Location Permission Flow on iOS 13.
(https://gimbal.com/ios-13-location-permissions/)
If want to get the GPS signal, the user need to select while in using or always.
And set up showsBackgroundLocationIndicator = YES, the app could get the GPS in the background.
It works well on the normal case(Launch with press the icon on the mobile screen).
But I figure out it could not receive the GPS if launch app via MFi device.
I also report it on the Apple bug report(https://feedbackassistant.apple.com/feedback/7537501)
I got a workaround but the first one is how to detect launch app via MFi device on iPhone.
By the way, I also check the argument of UIApplicationMain, but no use.
Please help or try to give some ideas about how to achieve this. Thanks!
Test Steps
1. First launch & user accept the location permission
2. Confirm the GPS could be used & check the setting page
3. Force close the app
4. Plug with the lighting and launch via MFi device
Answer my final solution.
I figure out if the app launch via the MFi device, the initial flow will enter applicationDidEnterBackground and not run to applicationDidBecomeActive. So, I just add a flag to record that and detect the EAAccessory status.
Share for who guys have a same problem. Hope this could be helped.
iOS 15 can use CLLocation's sourceInfo(CLLocationSourceInformation) to determine location information is from Xcode or MFI.

App is rejected by apple

My application is been reject by apple . They have message me that
During review, your app crashed on iPad running iOS 9.2.1 and iPhone running iOS 9.2.1 when we:
-Launch app
-Logged in
This occurred when your app was used:
- Offline
- On Wi-Fi
- On cellular network
But it is working fine on simulator and ios devices .
It dont know whats wrong with it .
Here are the crash reports
http://a697.phobos.apple.com/us/r30/Purple69/v4/f4/65/c0/f465c0c1-0261-7798-dca8-9b48c0de869a/temp..lfhkdwhz.crash?downloadKey3=1454075117_e097b43bf35613b18c897f3917dcd353
http://a401.phobos.apple.com/us/r30/Purple49/v4/cb/6c/c8/cb6cc858-d47a-aba8-0a7c-1bf304c4c56f/temp..rhzbnjqi.crash?downloadKey3=1454075117_556853386b65ca6d799acd6f6ce64fac
I dont know where are these crashes and how to resolve them ?
If you have read Apple instructions, they said its crashed on offline test. That means while there is no internet connection there is not available.
Simply follow these steps:
Check Internet Reachability at every place in the app where its used
After adding it test App on the device in which Apple testers found crash to make sure its working now.
Add appropriate alert messages for no internet connection
Note:
Thing is Simulator may not give you crash all time. Its best to test on real device before submit App for review
Hope it will help for you.

In Xcode I see (no paired Apple Watch) even though the watch is paired and the watch's UDID is registered

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.

Understanding interaction between Apple Watch and iPhone device

I am a bit confused as when I run the Apple Watch extension App schema on the simulator I see only that the Apple Watch app gets lunched. However I am not sure what will happen with real hardware once we get our hands on the Apple Watch.
I'd like to understand the following:
Do I need to start the corresponding iPhone App on the phone before
starting the App on the Apple Watch?
If the answer to 1 is no then, can I
start an iPhone App from the App on the Apple Watch? If the answer to 2
is yes then how can I start the iPhone App in a way that is not in
the background? (I found handleWatchKitExtensionRequest can trigger
background tasks but I haven't found any documentation yet for
that - I also found the Handoff Api which allows you to resume a task on the device but I don't like that it requires an iCloud account and I am not sure how to structure an App/watch interaction without forcing the user to adopt iCloud).
Given that the Apple Watch App extension resides on the iPhone App
bundle does this mean that when you start the Apple Watch App it needs a
connection and proximity with the iPhone device? I assume that there will
be a bluetooth connection and that it won't be possible to start
some apps if the user and its watch are away from the Iphone (what's
the range?)
Many Thanks
No.
No.
Unless you are on a Wifi network recognized by both your Watch and your iPhone, they'll need to be relatively close to each other. Guessing at range is useless – a number of factors can impact the useable distance of BTLE.

ios simulator - where is settings>notifications>appname?

I built a VOIP app for iphone where if you receive a call, you will hear a telephone ring tone. Some users have complained that they don't hear any ringtone. I discovered later that on the physical device, you can go to Settings>Notifications>TheAppName, and adjust your notification settings. One of htese settings is to disable sounds or allow sound, which corresponds to whether you get the ringtone or not when receiving a call. However, some users still don't seem to hear the ringtone at all despite having the most permissive sound settings.
I wanted to reproduce their issues in the iOS simulator. But I can't seem to find the Settings>NOtifications in the simulator. How do I locate this?
You cannot test push notification services on the simulator. You have to use a device to test it.

Resources