ios 11 UIFileSharingEnabled is gone - ios

So I have this secret calculator app where users can store their private phones in my apps documents folder. If they wanted to move files from their iPhone/iPad to their PC/Mac then they would connect their device to iTunes, select my app and move files to & from their devices. They have been doing that for years.
Today I found out that this UIFileSharingEnabled has been removed in iOS 11, since iTunes cannot be used for file sharing. The whole reason for my app (and tons of others on the app store) was that the users files were hidden from others and the only way they could get to it was using a passcode or finger print within my app ... and of course through itunes sharing.
I can add the following keys to my app plist file but that will make all of the users "secret" photos available from my app into Apple's default files app. I don't want that. Defeats the purpose of my app.
What exactly are my options now, if any, for file sharing?

Related

How to get IPA file of any iOS application

I am looking for getting IPA file of an ios application for which I do not have either project code , nor development id or bundle Id.
The application is available in app store. I have installed it into iOS mobile ....but for automation I am looking for it's IPA file.
It's not clear whether you're trying to download the .ipa from the App Store, recover it from a device, or generate it somehow. These files are basically zipped archives — once the app is installed, the .ipa probably doesn't exist on the device. And it seems unlikely that Apple would make it easy to download it from the store yourself.
If your goal is to set up a large number of devices, you should take a look at Apple Configurator and the Managed Distribution capability that it provides. Together with the "volume purchase plan," you can assign apps to the devices you're managing.

Transferring iOS app with iCloud enabled

When going to transfer my iOS app to another developer, I got this message
You can't transfer this app because of the following reasons:
iCloud enabled
You can only transfer apps that aren’t iCloud enabled.
Deleting and Transferring Apps Documentation
The documentation states:
Make sure the app uses only technology and content that can be transferred.
No version of the app can use an iCloud entitlement.
Since a version of my app used iCloud, is there literally no way I can transfer it? If there is a way, how should I proceed?
The app must be deleted and re-created with a new SKU/Bundle ID.
Remove the app from sale by going to Pricing > Select Territories > Deselect All
Delete the app under More (to the right of Prerelease, Pricing etc) > Delete App
Create the app under the developer account as a new app with the same name with a new SKU/Bundle ID.
This will delete any reviews/ratings, gamecenter data, iCloud data, and any other data linked to that app. You'll have to recreate any in app purchases you had.
WARNING: Never use iCloud Entitlements in an app. It's not worth it because it makes your app untransferable and therefore unsaleable forever!
I had enabled iCloud entitlements in some previous build to play around with NSUbiquitousKeyValueStore, and now I can never transfer that app... This is so so so very bad. I have an Android version of the app, ran into no issues with Google Play.
Same here. I was just using NSUbiquitousKeyValueStore to allow the user to share some settings across devices. Now all my users who paid for the app will not receive any more updates, my 4.5 star ratings will be gone, etc. I am super frustrated and this will cost me a lot of money.
I have written an article about his on medium.com, so feel free to share it in your professional networks if you feel this could help fellow developers to not run into this trap.
For June 2022+: Apple has updated the rules in 2022. Now you can transfer your app the regular way even if it uses iCloud. They write about limitations in their documentation now in "Apps Using iCloud" paragraph.

What's the best way to store & download dev .ipa files securely?

Right now we've got an app and plenty of versions floating around on Dropbox, but I want to be able to store all IPAs securely yet keep them available so anyone within the company can download them directly to their iOS device. Originally we set up an S3 bucket with an ITMS tag to download, but that only enables storing one IPA per PLIST, whereupon a separate website has to host that link along with any release notes and known issues.
We tried moving to a secure wiki but that ended up being more work than simply overwriting the IPA (and never updating the PLIST). Is there a simpler way of doing this?
You should use OTA, over the air distribution. It is a feature of xcode, basically you store your IPA files on your server (with the respective info.plist) and when you want to share the app you have only to share the url. Google it, you have to do some steps but is quite easy and absolutely secure (also because the device on which you want to download the app must be registered on your provisioning profile).

How to make two iOS apps share plists?

I am making an iOS app that has a free version and a paid version. When a user gets the paid version he/she mustn't lose any of the free app's data. The data is stored as plists.
How to I configure the Entitlements file to enable this? And how do I move (import) the plists to the paid app's Documents directory in my code?
How to I configure the Entitlements file to enable this?
This has nothing to do with the entitlements.
And how do I move (import) the plists to the paid app's Documents directory in my code?
You don't - an app cannot possibly access the sandbox of another one. (Well, actually, if you are developing for jailbroken devices, then this is not a problem, but it seems you're targeting the AppStore, right?)
Two things you can do.
Make one version of the app and use in-app purchases to give users access to paid features (this is preferred), or
Store data in the keychain, and set both apps' keychain access group to the same one. This way they can share data. (Now this is something you would actually set in the entitlements property list.)

Sharing between iPad aps

I have to share a directory created by appA with appB. Is there a way I can "authorize" appB to access the folder created by appA in its space? They are iPad only apps.
I know about UIPasteboard, but I want to share(preferable secure) multiple small files (stored in a folder) created by appA with appB.
I am want to avoid using a server to establish sharing between the apps.
Edit: Both app will be installed on the same device (iPad).
Thank you.
--AAT
From Apple's provisioning portal:
In addition, an App ID can also be used to share keychain data (such as passwords) between a suite of applications and share document and configuration data between your applications using iCloud.
So using iCloud, yes you can; otherwise, no.

Resources