wireless iphone app distribution - install does not work - ios

I have a problem similar to wireless iphone app distribution - problem with itms-services protocol. When I click on the link pointing to the plist file in safari on the device, the link briefly flashes but nothing happens. I've checked the following:
the ipa installs ok using itunes
the mime types are set (i've checked the http headers returned from the server)
there are no spaces or special chars in the url's and the url's are fully qualified
What I did notice is that I can't access ocsp.apple.com from my ipad, my mac or anywhere really, browser, telnet, etc. Is it only open on a specific port? I tried to proxy network traffic from my ipad to my mac to see the network traffic but all I see is the 200 response returning the plist file. If I tether the ipad and watch the console logs, I sometimes see:
Jan 31 14:39:56 unknown wifid[27] : WiFi:[349731596.044674]: Client itunesstored is background application

Related

pkpass not downloading on physical iOS device

Background: I'm learning Apple Wallet by creating a barebones sample app and am trying to automatically update a pass. In order to do so, I understand I need to run a web server that sends push notifications to the device when it's time for the pass to update. I'm using Apple's sample code and running their Ruby webserver via localhost. It correctly generates a .pkpass file, which I can add to Apple Wallet in the simulator by visiting the localhost site or by dragging in the .pkpass file.
Problem: This process doesn't work on my physical iPhone. When I go to the localhost on my iPhone, it shows a 200 response code but comes with the popup "Safari cannot download this file." Even if I try just emailing the generated .pkpass file to myself, it won't open in Wallet.
For anyone who may be wondering, I got it to work by changing the web host to https. Then I ran into another problem getting automatic updates to work, solved here: How to allow HTTP webServiceURL in apple wallet's pass.json file

Universal link do not work on real devices

I'm currently working on implementing universals links into my App, they work perfectly on my simulators whether using command line xcrun simctl openurl booted or by tapping on links from messages
BUT I cannot run them on real devices (3 differents iPhones tested with 3 differents iOS 14.X versions)
App configuration > Signing and Capabilities > Associated Domains are correctly setup as applinks:<domain_name>.
I've already tried to :
uninstall/reinstall the App
clean my build repository
reboot my device
wait 5 minutes after installing the App
use another HTTP protocol for the route https://<domain>/.well-known/apple-app-site-association
tap the link from many apps (messages, discord, notes...)
expose my site with ngrok / localtunnel / apache server (in prod)
turn on/off "Associated Domains development" in Developer settings
I've verified on AASA validators sites like branch.io or appsflyer.com and everything is OK, once I reinstall the App to my iPhone, the aasa file is requested and it returns a 200 OK http response with the correct Content-Type : application/json
I ran out of idea to solve this issue. I really want to make it works before deploying the app on the Appstore even if it is working fine on simulators.
Thanks for your future help
Unfortunately, Universal links are not reliable for everyone, this seems to be an issue where the AASA files are not getting downloaded in the device.
Known Bug
There is a known universal bug for Apple where devices for iOS version 11.x+ , the AASA files do not get fetched and thus causing the Universal Links to fail.
Validate the issue
Normally, the Apple OS looks into retrying to fetch the AASA file at some time interval but the workaround might help for a test condition.
Inside the app, check if the AASA files were downloaded successfully or not. To do this:
Copy the link into your notes app.
Long-press the link till a dropdown appears. If the dropdown shows 'Open link', then Universal Links are not working for that device. If the link shows 'Open in app name', the configuration is working fine.
Backup plan
Also you can implement a fall back deeplink call on your sercerside with the help of user-agent and other stuff
In your apple-app-site-association file check if you are using "appID":".bundleid". If so, try replacing it with "appID":".bundleid" or vice-versa.

Associated Domains with `applinks:` is not working in development

I'm trying to set up Associated Domains in my unpublished app for iOS 14. I followed the documentation as good as possible. I'm testing locally with my local dev web server and the app itself in simulator and a real iPhone.
Not only are links not opening in my app, the app does not even attempt to request the file https://mycomputer.local/.well-known/apple-app-site-association from my local web server (I let the web server print a debug message whenever it is requested, but the message is only printed when I manually load it from a web browser).
This is a list of things I have done/checked:
Xcode 12.2:
Under Signing & Capabilities added Associated Domains
Added to Domains: applinks:mycomputer.local?mode=developer (I also tried IP address)
I disabled Automatically manage signing and instead created a Profile on https://developer.apple.com/account/resources/profiles/list (type Development, platform iOS, it has Associated Domains amongst other enabled capabilities and it's linked to my app bundle ID) and selected that profile for the debug build.
I made sure that the URL https://mycomputer.local/.well-known/apple-app-site-association is accessible from all devices involved, i.e. my computer, Safari in simulator, Safari on real iPhone (all are connected to the local network and successfully display my JSON file).
Screenshot:
As mentioned above, I can pretty much rule out that the problem lies with the JSON file itself as I can proof that the device is not even accessing it. Am I missing something or misunderstanding the concept?
My own answer: Using the query string ?mode=developer in the entitlement as described in the documentation simply appears not to work at all.
To verify this I have set up a real server that can be publicly reached on the internet and tried both variants:
applinks:example.com
applinks:example.com?mode=developer
Number 1 works, but the JSON is loaded via Apple's CDN and you cannot use it for local development or for quickly testing different versions of the JSON file as Apple will cache the file for probably one day.
Number 2 does not work at all, no request to the server will be made.
Also, good to know these requirements when testing on actual devices. (And using a domain thats not publicly available in testing period.)
Turn on Developer Mode on the device.
Turn on Associated Domains Development in the Developer settings. (Developer settings will first occur after you have turned on Developer Mode).
Build the app using developer certificate. (Enterprise will not work).
Add ?mode=developer to the domain in entitlements if you are testing with a domain thats not publicly available (Behind VPN..)

Is there an way to Inspect a broken link in an app?

We have an iOS app that has a Watch Tutorial link to our website. We recently migrated our website and the page it points to is now showing a 404 error. We need to know what page the link points to so we can redirect it. Unfortunately in the app it just opens link to the page in the actual app and not in safari or any other browser so we can't see the website link.
Is there a way to "inspect" the link in our app like you can in a browser to see where it is pointed to? Maybe some debugging software that can pull the app down and let me look at it? Our app developers are unavailable right now and we want to get the app up and running correctly.
You can try with the Safari Web Inspector (Safari mac remotely debugging on an iPhone app/safari).
With this approach, you can inspect from you mac, any WebViews (or related) in actual apps.
Note : It won't work if you app make the request, but does not use web view to display the page.
See any tutorial on how to enable safari web inspector
Maybe some debugging software that can pull the app down and let me look at it?
You can use a web proxy such as Charles to easily see all the traffic going to and from the app:
Install the proxy software on your computer.
Set the device to proxy through your computer.
If needed, install SSL certificates that will let the proxy see the contents of TLS connections.
Fire up the proxy, launch the app, and watch the traffic.

iOS 7.1 OTA Install Fails "Cannot Connect to <url>"

I've searched the interwebs/SO far and wide and I'm having no luck.
Server is running IIS 6;
.ipa mime type is set to application/octet-stream;
.plist mime type is set to application/xml;
Server has valid Godaddy certificate installed.
The link itms-services://?action=download-manifest&url=https%3A%2F%2Fmyserverurl.com%2Fiosclient%2Fmysoftware.plist fails to install on iOS 7.1 devices. It's set to https. If I set that link to http, my phone running iOS 7.0.4 downloads and runs the application just fine. If I set the manifest to use https, both devices show the error "Cannot connect to myserverurl.com". I have tried setting the link to the IPA file in the manifest to both http and https but I am having no luck at all.
I made sure that I can put both the plist and ipa URLs in the address bar of my browser and they are both completely accessible.
Any ideas? I've been playing with this for a couple hours now and I'm not having any success.
There are several reasons why you may see the "Cannot Connect to " error; however, one other thing to check are the file permissions on your server. Specifically, right click on the folder which holds your IPA and plist and choose properties, then go to security. Add the "Everyone" user and assign full rights to it. If that resolves your issue, you can then "backpedal" to a more secure, but functional user/file permission configuration of your choosing.

Resources