Which CloudKit services are not available if user not turns on iCloud Drive?
Is it any way to turn on iCloud Drive from app?
I guess downloading records from public container should work regardless iCloud Drive, writing container only if it is enabled?!
CloudKit is linked to the iCloud account. If the user is login in into iCloud, but does not have iCloudDrive enabled, then there are no limitations to CloudKit.
If the user is not logged in into iCloud, then he can only access public data. You could set this on any recordType from the CloudKit dashboard.
There is no way to change the login from within your app. You can only login from the settings app. There is also no way to enable iCloud Drive from your app. For that you also need to go to the settings app