iOS 9 Beta 2 Network Issues with MeteorJS - ios

I´ve installed the new iOS 9 Beta and Xcode 7 to test meteor apps with the coming iOS Version. I figured out that there are some network related issues.
The Client (iPhone) can´t connect to the server to subscribe into the published collections. If I cast an eye on the logs it looks like its serving the files in the "public" folder. After serving the public folder it drops a console log "network". Its not really an error message its just say "network". My app was running on iOS 8 without issues.
I´ve also tested it with the leaderboard example. The leaderboard app is running but there are no collections served to display the player names.
anyone with the same issues? or ideas to fix it?

Open up your app in Xcode. You can access it at .meteor/local/cordova-build
Find your app's info.plist in the Xcode browser.
1) Create a new key, NSAppTransportSecurity
2) The value should be a dictionary containing another key NSAllowsArbitraryLoads that is set to true.
This should solve the issue. iOS 9 does not allow you to connect to sites without SSL. This makes it hard to develop without reverting the security setting with the policy above.
More info: https://github.com/meteor/meteor/issues/4560

Related

Universal Links work in simulator but not on real devices

I added the apple-app-site-association: <domain>/.well-known/apple-app-site-association
I started with the "applinks" and when that didn't work I also added webcredentials and activitycontinuation.
I enabled Associated Domains for this app id and in the project I added applinks:<domain>, applinks:m.<domain> & applinks:*.<domain> in the associated domains which now appear in the entitlements file.
I checked the domain in the apple validation tool https://search.developer.apple.com/appsearch-validation-tool/ and that worked.
I tested it on multiple simulators and in each of them I could go to the website in safari and it showed me the banner above, I also sent a fake message in the Messages and that showed the details and opened the app.
I also tried changing Deployment Target to iOS 10.
But when I try to install it on the device from xCode, either in debug or release configuration or even upload the build to test flight, this doesn't work (Tried on iPhone 5s, iPhone 8 & iPhone XR).
I searched the internet and saw many people saying that universal links did not work for them until they did this and that and I tried every thing they said but I still can't make it work on real devices.
Is there something else I should do to make this work or did I get something wrong?
You have to wait a bit ( from minutes to hours ) after your app is successfully installed and launched to let iOS fetch the associated domain.
You can use a proxy like Charles to check if iOS has make the call.
Got the same issue and fixed by replacing App ID prefix instead of team ID in apple-app-site-association file

How debug Universal links

I use the cordova plugin "ionic-plugin-deeplinks" (to my knowledge also works with a plain cordova app).
On Android, links when clicked let users choice between chrome and my application.
=> I suppose that app links works
=> As I'm able to access window.IonicDeeplink and redirect the user to the right page
I'm not able to have the same behavior on iOS, when I click a link I always get the app open in Safari.
How can I find clue on issues ?
More context:
apple-app-site-association is got with a HTTP 200 (over https only), it's located in /.well-known/apple-app-site-association:
I checked TeamID and BundleID 5 times (at least);
with the branch.io validator i get all validations green:
Your domain is valid (valid DNS).
Your file is served over HTTPS.
Your server does not return error status codes greater than 400.
Your file's 'content-type' header was found :)
Your JSON is validated.
with the apple validator, I got : "Action required
Could not extract required information for Universal Links. Learn how to implement the recommended Universal Links.
Error no apps with domain entitlements
The entitlement data used to verify deep link dual authentication is from the current released version of your app. This data may take 48 hours to update." (but some devs said that working app add the same error) what to do with that result?
when monitoring server's log while installing the app with Xcode I see a request get a HTTP 200 on apple-app-site-association
while installing the app with Xcode I got no logs referring to swcd in Xcode (I read here that I should if I had error while installing the app). Is a successful installation silent?
I followed that guide to setup entitlements, but some things feel odd with it:
Unlike the snapshot in the guide, I didn't found any *.entitlements file in my project. Should I have one with cordova? (my xCode seems to remember my setting though). Is it possible to check that installed app get entitlements?
I did set my domain in Xcode like this: applinks:mydomain.com and the switch is ON. But I never uploaded any thing from my local dev environment to apple services. Should I have? If yes, how ?
My current interrogations are highlighted but any explanations on any lack of understanding will be more than welcome!!!
Until then I started a verification for testFlight looking for more info.
while installing the app with Xcode I got no logs referring to swcd in xCode
I implemented Universal Links manually, but situation was similar. Particularly I mentioned empty swcd process log while installing the app, and it turned out that most likely iOS didn't even try to download apple-app-site-association file, like if responsible process wasn't run. In my case device restart helped and deep-linking began to work.
Thus I think restarting device is one another step in troubleshooting when you are sure about all your setup.
For anyone trying to debug this in development:
In XCode, ensure you're editing the Debug version of Signing & Capabilities.
To bypass the Apple Universal Links CDN, configure your Debug domains like applinks:?mode=developer -- adding that query string in development is important.
On your iOS Device, go to Settings->Developer->Universal Links and ensure the Associated Domains Development toggle is switched on.
On your iOS Device in Settings->Developer->Universal Links->Diagnostics, enter your Universal Links URL and ensure you get a green checkmark.
After following all of these steps, Universal Links work locally.

<Error>: Couldn't read values in CFPrefsPlistSource

I'm facing some problems with iOS 11. We use App Groups to share some information between some of our apps, but some clients after updated their iPhone to iOS 11+ the apps stoped accessing the information in the App Groups. It always worked.
I'm getting following error:
Couldn't read values in CFPrefsPlistSource<0x1c010b5b0> (Domain: group.com.****, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
Anyone has any idea of what can be causing this? Some clients after delete all apps and install again resolved the problem, but some said that it didn't resolved (I don't know if they really deleted all of our apps).
There is some way to recycle or clean the App Groups?
From watch OS 2 we are not able to access app groups so if you want to get any info from keychain e.g login info or some thing, you can use watch connectivity framework. When I tried to access some information from userdefault which worked fine in watchOS1 it shows me the same error after upgrading watchOS . For how work with watch connectivity please see this link. Here everything is explained.
https://kristina.io/watchos-2-how-to-communicate-between-devices-using-watch-connectivity/
In my case error was caused by the fact, that I was trying to create plist file named "settings.plist" inside of the Shared Container the iOS provides us for access via AppGroup.
Seems like it prevents us to create files with names similar to os & core functionality.
Changing the filename, for example "07087_settings" – removes the error, changing back to "settings" – throws error again.

App Transport Security not working on Distribution

I have set App Transport Security for my iPad App with exception domains for few open api like weather online traffic etc., which we display it in a cordova webview. If I run it directly into iPad, it is working fine. But it is not loading correctly if I archive and distribute it.
Any idea ?
Actually, it looks like you are incorrectly adding exception domains. Don't include http:// in your exception domain entries.
Are you testing locally on an iOS 10 device (which would use the NSAllowsArbitraryLoadsInWebContentto ignore ATS in your web view altogether)? It would work on an iOS 10 device, but maybe the enterprise distribution fails on a device because the device is iOS9, which would try to use your exception domains, which are formatted incorrectly.
Another possible reason for a difference in behavior is that you have a different Info.plist specified for debug vs. release builds. Verify in your project settings that you are referencing the same Info.plist file for both build configs.

Issues with Xcode & Realm browser

So i've been trying to use Realm browser with Xcode so that it's easier for me to see and test my objects. But i seem to be running into a couple of problems with this.
The first issue is that with Realm Browser i'm not able to actually open up my files location using the dropdown option 'open common locations' so i can open it via the iPhone simulator. Even when i do open the file using alternative methods i keep on getting the following error in the console.
UserInfo = {
Error Code=8,
NSLocalizedDescription=Realm file is currently open in another process which cannot share access with this process. All processes sharing a single file must be the same architecture. For sharing files between the Realm Browser and an iOS simulator, this means that you must use a 64-bit simulator.
}
Which is weird because my Macbook is 64 bit since it's the Mid 2013 Macbook Air could anyone help solve this problem at all? Since it would make development so much easier if i could just use the browser application.
So i figured this out and realised that you have to be running the app using an iPhone 5s or higher
You are correct. Realm cannot be opened at the same time between processes of different architectures. iPhone 5 or earlier simulator is running as 32-bit process.

Resources