Is iOS Data Protection compatible with the Parse local datastore? - ios

Apple offers the Data Protection capability to apps which encrypts data stored on the device when the device is locked. The Parse iOS local datastore is apparently stored as an unencrypted sqlite database. Is it possible to apply the required Data Protection attributes to the local datastore, specifically NSFileProtectionComplete? The Parse iOS docs don't say anything about this.
I have already applied the appropriate CLPs and ACLs to my Parse classes/objects. I'm looking into iOS Data Protection so that if a user's phone is lost or stolen and a device passcode is in place, the data inside their local datastore cannot be read.

Related

CloudKit offline storage

I'm developing iOS app which is using CloudKit. I'm pretty clear how to download/upload data from cloud when requested on the device. It works just fine when internet connection is present. I'm thinking to allow users to access their data offline also. After brief research I discovered that CoreData integration with iCloud was depreciated as of recent Xcode release. I found some third party pods on github which let you handle this problem by syncing core data from device to iCloud. I'm a bit skeptical using those plugins due to possible data loss or other issues. Is the idea behind depreciating CloudKit to move away from offline storage? Im thinking now what to do... should I attempt to create some sort of sync between core data and iCloud or not use core data at all and just let users to access data only when online connection available. Such approach would save device storage but restrict data access to online only. Any recommendations ?
CoreData integration with iCloud is not depreciated, here are some references from Apple:
Setting up core data with CloudKit
Syncing a core data store with CloudKit
Mirroring a core data store with CloudKit
WWDC 2019 - Using Core Data With CloudKit

Use iPhone fingerprint sensor without Touch ID

Is it possible to read my own fingerprints without using Touch ID?
iOS and other apps never access your fingerprint data, it's never
stored on Apple servers, and it's never backed up to iCloud or
anywhere else. Only Touch ID uses it, and it can't be used to match
against other fingerprint databases.
Because I can not get access to the iPhone fingerprint database, I would like to use the iPhone integrated fingerprint scanner and create my own fingerprint.
iOS and other apps never access your fingerprint data
This statement clearly states you can't get any data from fingerprint sensor. All information is encrypted and stored on device which your application can never access being sandboxed.

Access ios apps documents and other files

I have a doubt if any one can access the files and document directories of an iphone app. Need to check if anyone can access the files if they get the device. I have a sqlite file in my app whose data is sensitive i dont want other users to hack or access it.
Please let me know how we can access any apps database.
It will depend on the user, basically, if the user has set a passcode, it will encrypt all data on the device. If the user has not set a passcode, then data will live unencrypted. As a rule of thumb, you must assume if the information lives on the device, that information might be at risk.
Here is what apple has to say about it:
Data protection is available for devices that offer hardware
encryption, including iPhone 3GS and later, all iPad models, and iPod
touch (3rd generation and later). Data protection enhances the
built-in hardware encryption by protecting the hardware encryption
keys with your passcode. This provides an additional layer of
protection for your email messages attachments, and third-party
applications.]1
Also:
On devices running iOS 8, your personal data such as photos, messages
(including attachments), email, contacts, call history, iTunes
content, notes, and reminders is placed under the protection of your
passcode.

Using iCloud for core data sync

Mine is a background application. There are thousands of data that are stored in local storage and till now i've been syncing the data to a remote server using http post. I want to know whether it is possible for me to use iCloud to sync my core data and then is it possible to sync from iClod to a remote server. I just want to use iCloud for storage purpose. I meant can it be operated like Parse and other third party cloud servers. I'm stuck with this. Any help would be greatly appreciated.
The only thing iCloud with Core Data does for you is sync data between multiple devices that use the same iCloud account.
I want to know whether it is possible for me to use iCloud to sync my core data...
Sync from one device to another, yes.
...and then is it possible to sync from iClod to a remote server.
If you're using Core Data with iCloud, you're still using Core Data, so any server sync you're doing now with Core Data will continue to work in the same way.
I just want to use iCloud for storage purpose.
It does store the user's data on the iCloud service, though it can only be accessed through your app.
I meant can it be operated like Parse and other third party cloud servers.
It depends on what Parse (or other third party) services you're interested in. Parse does more than iCloud, it's not really the same thing. If you would use Parse only to sync data between different devices, you could probably use iCloud. If you would use Parse in any other way at all, iCloud is not a replacement.

Need to encrypt Core Data

I am making an iOS application where all data stored in Core Data needs to be encrypted when the app is not in use. I understand that newer iOS devices (and devices running iOS 4 +) have access to hardware encryption and special protection APIs, but to my understanding, these only apply when the device is locked. There is no guarantee that users of my app will have a password lock on their devices, yet I still need to encrypt.
Also, I would prefer not to encrypt every individual core data attribute by using transformable attributes, and I understand this makes querying much more difficult. Preferably, I would like to do something like encrypt the core data file on app-close, and un-encrypt it on app-open (I know this might be slower).
Any solutions?

Resources