Shared Web Credential failed to approve on iOS 10 real devices - ios

recently a problem appeared in my iOS application. I'm using Shared Web Credential to get associated user credentials:
SecRequestSharedWebCredential(0, 0, ^(CFArrayRef lpCredential, CFErrorRef lpError) {
// stuff
});
It was working fine until recently, when I discovered it stopped working on iOS 10 devices (possibly only 10.2 devices but I don't have older versions to check). Everything should be in order (entitlements, signed apple-app-site-association file on the server) as it works on iOS 9 and 8. Also it works on every version in simulator (even 10.2).
But on real devices iOS 10 it doesn't work. Completion block is called with error code
-25293 (Authorization/Authentication failed.)
"www.webcredentialsurl.com" failed to approve "AppPrefix.AppID"
Does anybody have any idea what might be causing this? Did Apple change something recently? I'm using Xcode 8.2.

Okay, so I finally found out what was wrong. Since iOS 9.3, Safari searches for apple-app-site-association file in /.well-known directory. If there is no such page or it doesn't find this file, it goes to root directory. However, since iOS 10 it goes to root only if page is not found! If you have redirect there, it treats it as if apple-app-site-association doesn't exist. So you either need to remove redirect for /.well-known or put your apple-app-site-association file there.
Official Apple documentation (they updated it recently to inform about /.well-known more prominently. When I was looking for a solution it was only partially mentioned in brackets...)
https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

Related

DriverKit driver doesn't appear in Settings when installed with iPad app

I'm working on a DriverKit driver. I have it running on macOS, including a very simple client app written in SwiftUI. Everything is working fine there. I've added iPadOS as a destination for the app as demonstrated in the WWDC video on DriverKit for iPadOS. The app builds and runs on my iPad, as expected (after a little work to conditionalize out my use of SystemExtensions.framework for installation on macOS). However, after installing and running the app on an iPad, the driver does not show up in Settings->General, nor in the app-specific settings pane triggered by the inclusion of a settings bundle in the app.
I've confirmed that the dext is indeed being included in the app bundle when built for iPadOS (in MyApp.app/SystemExtensions/com.me.MyApp.MyDriver.dext). I also can see in the build log that there's a validation step for the dext, and that seems to be succeeding.
I don't know why the driver isn't being discovered -- or in any case surfaced to the user -- when the app is installed on the iPad. Has anyone faced this problem and solved it? Are there ways to troubleshoot installation/discovery of an embedded DriverKit extensions on iOS?
Update after further debugging:
I've decided to try to get Apple's DriverKitUserClientSample sample app working on iOS, since some version of that is what was shown in the WWDC video, and it's much simpler than my driver.
I'm able to get it working on macOS, following the instructions for provisioning etc. in the page on the sample app. But I'm having the exact same problem on iPadOS where the app runs fine, but the driver doesn't show up in either general settings, nor the app's own settings page. I'm using manually, explicitly generated App IDs and provisioning profiles for the driver and container app.
Looking at the console logs on the iPad, the only thing I see that seems to have anything to do with the driver (as opposed to the container app) is this line:
debug 15:35:10.872075-0700 installd open(/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.3XF4J5/extracted/DriverKitSampleApp.app/SystemExtensions/com.openreelsoftware.dext-to-user-client.driver.dext/Info.plist,0x0,0x1b6) = 4
Not sure what that means, except that I worry that = 4 is an error code. Assuming it's the regular open() being used here, 4 is EINTR // Interrupted system call.. Not sure if that really means anything.
I've put my modified version of Apple sample project on GitHub here: https://github.com/armadsen/CommunicatingBetweenADriverKitExtensionAndAClientApp
Any help is most welcome.

React JS not opening in apple browsers

I have a website created in react js, when I try to open it on windows or android the loading happens normally.
But on IOS devices it doesn't load anything from the site.
I tried to use https://polyfill.io/v3/polyfill.min.js in my index but I still couldn't.
PS: I don't have a mac to debug, tests only on an iphone version 15, I didn't find the iphone ios console to see the errors.
Problem solved, first step was to update the browserslist.
Second it was seen that the application was with storage in localStorage above what safari was handling, thus causing the error.
Removed localStorage.
Link:
https://github.com/browserslist/browserslist
Link:
https://stackoverflow.com/questions/1921048/limit-of-localstorage-on-iphone#:~:text=Mobile%20Safari%20on%20the%20iPhone,limit%2C%20afaik%2C%20on%20localStorage.

iOS 13 AASA file not downloading

I noticed that the AASA file is not downloaded (by monitoring the API calls in Charles) on iOS 13.1.
I was going through the WWDC https://developer.apple.com/videos/play/wwdc2019/717/ video, but could not find any hint whether we need an additional step on iOS 13.
Anyone experienced the same problem?
It works on iOS 12.2 and earlier.
i was facing this same issue. I found that was charles root certificate the cause of the AASA file not being downloaded. After I removed it from my device, AASA file was downloaded again and universal links worked fine.
You can check in your console for error if any during file download on first installation
https://ios13.dev/universal-links-debugging-on-ios-13-cjwsux93w001p6ws1swtstmzc
And if you want to validate JSON format
https://branch.io/resources/aasa-validator/

iCloud and Core Data not working - URLForUbiquityContainerIndentifier is nil

I am not that familiar with iCloud integration. I read numerous bad reports about the integration in iOS 5 and 6. But now I guess it's better in iOS 7 so I decided to add it in one of the new apps I'm working on.
From what I read and saw in the WWDC 2013 CoreData/iCloud video I thought it was as simple as flipping on iCloud in Xcode and configuring the NSPersistentStoreUbiquitousContentNameKey value to something unique in the addPersistentStore call, to get started. But each time I run the app, in the simulator or on a physical iPhone, the console output shows the iCloud setup failed due to URLForUbiquityContainerIdentifier returning nil.
I am using Xcode 6 beta and the iOS 8 beta 2 SDK. I've made sure iCloud is signed in and otherwise functioning on the simulator and physical devices. I've also made sure that the "Documents/Data" switch is on under iCloud setting and the app IS appearing here. I've also browsed to the simulator application directory and I see the SQLite file in the normal documents directory and in an iCloud directory.
Is there something really simple I'm missing?
There is bug in Xcode 6 beta version , i am using Xcode6 beta 5 and facing same problem.
I changed key com.apple.developer.icloud-container-identifiers to com.apple.developer.ubiquity-container-identifiers" (ubiquity, not icloud). Then add an item to this as "iCloud.$(CFBundleIdentifier)". In "Capabilities" tab Xcode will show error in red mark but don't fix it , leave as it is.
If solved my problem and i am getting Url now.
Not sure what the developer agreements allows to say, but at the time of writing this, it is still beta and most probably is a bug in xcode 6. There may be a few threads on the developer forum on that exact same subject. Search for 'URLForUbiquityContainerIdentifier' and you may find more information.
Try beta 4. My iCloud code is now working.
You didn't mention configuring your app ID for iCloud access and updating your provisioning profile, so that's probably the problem. The device needs to know that your app is allowed to talk to iCloud, and it does that based on the provisioning profile. You'll need to go to the iOS developer site and:
Update the app ID to add the iCloud capability
Regenerate the provisioning profile so that it includes the new capability
Download a new copy of the profile and make sure that you're using it in testing (it's best to delete the old copy first just to be sure).

Why does XCode (4.5.1, Lion) require an internet connection to connect to iOS simulator?

I am developing an ios app that doesn't need an internet connection. I'm using phonegap and jquery-mobile. I'd like to develop offline, but XCode gets stuck with a status saying 'Attaching to iosproj' (iosproj is my project name). After that I cannot stop the stuck task, and have to force-quit XCode. With an internet connection however, everything works just fine. Grateful for any clues.
Edit: XCode seems to install the app fine without a network, but it gets stuck before/durimg receiving the deviceready event.
Update 1: The app runs fine on the simulator with or without the n/w. It is purely the XCode-iOS simulator interaction.
Update 2: When using phonegap (Apache cordova), there's an easy work-around to work offline. Once the project has been built and installed (with a n/w), all subsequent updates to html/js/css/img can be made directly to the www directory in the simulator's Library (under your app folder, in ~/Library/Application Support/iPhone Simulator/6.0/Applications).
The Simulator itself attempts to make an Internet connection to Apple as it launches. In particular, the itunesstored process attempts to connect to ax.init.itunes.apple.com and phobos.apple.com.
[That information comes from LittleSnitch. You would be well advised to install LittleSnitch so that you can be sure of exactly what connection is being attempted here. No one - certainly no developer - should be without it.]
If you find this troublesome (that is, if the connection failure is causing you to be unable to run your app in the Simulator at all) you should file a bug report with Apple. However, I've had no difficulty with this, so perhaps this an Xcode bug. I'd suggest first updating to Xcode 4.5.2 in case it is fixed there.

Resources