I'm trying to use iCloudCoreDataStack for syncing my app's Core Data store over multiple iOS7 devices. This works, meaning I can work offline and add data on the real device and this will shows up later in the simulator after going online.
However, I am unable to delete all data stored by my app in iCloud. Even if I delete the app from the simulator and my device, going into the settings app (Storage and Backup -> Manage Storage) and deleting my app's data there, reappears later if I reinstall the app again. I've waited several hours after deleting.
What's the proper way of manually deleting everything an app has stored in iCloud? Can the user do that?
Use the NSPersistentStoreCoordinator removeUbiquitousContentAndPersistentStoreAtURL:options:error: API
If the app has been deleted then use the Settings app to managed iCloud storage
Settings->iCloud->Storage&Backup->Manage Storage->AppName.
Related
I have an app out in the App Store, and I am working on a lightweight migration (adding new attributes and new entities, not deleting anything). From extensive research, I know that I need to add a new version of my current Core Data Model for the local version of the data model. Anyone who updates their app and only uses the local data will automatically be migrated over.
However, I can not find anything about what happens when I update the iCloud schema (from icloud.developer.apple.com). Mainly, I'm concerned about users who are on older versions of the app and are using iCloud. When I update the schema in the iCloud website, will users on an older version of the app lose their current data or not be able to sync their data since their local schema will be different from the iCloud one?
Also, I'm using an NSPersistentCloudKitContainer for syncing the Core Data with CloudKit.
Any help is greatly appreciated as I do not want to mess up anyone's data!
No, their data still be on iCloud and they could continue to use your app.
When your Schema is deployed to the Production environment, you can not change types of Records or delete them, so all your changes will be done only in addition to the current Schema settings and does not affect users, which have not updated the app yet.
I had a similar question previously and was quite anxious about updating my app Schema, but everything went well - no problems for users and no data was lost.
Do not forget to initialize your new scheme from the app and deploy changes to the Production on iCloud dashboard.
You could initialize your scheme in your AppDelegate when you initialize your NSPersistentCloudKitContainer with following code:
let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
try? container.initializeCloudKitSchema(options: options)
After that you could comment out these lines until the next update of Core Data model.
You could check that all changes are uploaded in the iCloud dashboard by clicking on Deploy Schema Changes - you will see a confirmation window with all the changes to the model which will be deployed.
It is also possible to change your Scheme directly in the iCloud dashboard, but it is not so convenient (unless you need to add just one Record type).
Since changes in the Schema are not affecting existing users, I usually move them to Production before I submit the app for review, but after all testing related to new Record types is done and I am not planning to change anything there.
I am trying to transfer an app of mine into my company iTunesConnect account but are getting the error:
You can't transfer this app because of the following reasons:
Sandboxed Group Container
You can only transfer sandboxed apps that are not sharing a group container.
the thing is, my app isn't using the group container any more, it was in an older version but not the currently shipping version in the Mac App Store.
does anyone have any experience with how to go about transferring the app?
Even though my app wasn't currently using a group container (it had in the past) I couldn't transfer it. I had to re-upload as a new app losing all my reviews.. :(
It appears to be impossible. I got the following response from iTunes Connect Support (September 15, 2017):
I have reviewed your enquiry and found that once the app has the
entitlement included, an app transfer will not be possible, even if
you submit a new version without the entitlement. However, you can
transfer the app via the binary reassigned process.
By completing this process (a "binary transfer"), the app will effectively be a new and separate app on the Mac App Store. This might of course be very inconvenient, but there's not really anything to do about it, unless Apple changes the rules.
I have an iOS app that uses Core Data with iCloud sync. The app is working perfectly and syncing across multiple devices. As part of my implementation my app is registered for the:
NSPersistentStoreCoordinatorStoresDidChangeNotification
This notification works perfectly with the app in the foreground, but what I would like to do is fire a local notification to let the user know that the iCloud data in the app has changed, whenever the app is in the background and a sync notification comes in.
I was under the impression that iCloud Core Data syncing continued in the background, but I am having trouble figuring this one out.
The code to fire a local notification is located in the function that is run when the above notification comes in, but it only works when the app is in the foreground.
I have a reasonably complex Access 2013 web app which is now in production on hosted O365 Sharepoint. I would like to take a backup (package snapshot) into a test environment, and then migrate this to production once development is complete (I certainly don't want to do development on the production system!). The problem is that the snapshot also backs up all data so uploading the new package over the top of the existing package in the sharepoint app repository reverts the data to the time of snapshot as well. Alternatively, rolling back to the original snapshot if there are issues would lose all data after the new package was applied.
I can easily get a second version of the app going by saving as a new application etc but this creates a new product ID etc in the app store. We also use a Access 2013 desktop accdb frontend to hook directly into the Azure SQL database to do all the stuff that the web app can't provide (formatted reports etc) so I cant just create a new app every time without dealing with all of the credential and database renaming issues.
So my question is, does anybody know how to safely operate a test environment for Access 2013 web app development? One needs to be able to apply an updated version, or rollback to the old one if there are problems without rolling back the data. With the desktop client I can just save a new copy of the accdb file every time obviously. I dont mind creating a new instance or link to the app on sharepoint each time, however this obviously generates a totally new database (server name, db location, login id's etc) as well. You would hope there is a way to upload and replace your app without touching the data, else how else can you develop without working directly in production?
Any answers would be really appreciated.
Thanks.
While regular publish to Azure with WebDeploy, had checked Execute Code First Migrations, which i did before.
But this time the Use this connection string at runtime, was also checked, and i published without noticing it. as a result the remote azure db was wiped and instead is seeded with what looks like a default database with aspnetmemembership tables and _Migrations table that only has migrations related to identity tables.
The production data w db structures is gone and I did not yet setup backup on azure, doing it now.
Is there way to restore the database from some sort of auto backup on azure, i have web version w 1Gb size selected, I do not see any options
this suggests that web version would not have any daily backup, but also that web version is discountinued as of april, but i still have it. http://msdn.microsoft.com/en-us/library/jj650016.aspx
and another questions, i understand everything that happened? But it seems extremly dangerous that its so easy to wipe out the whole database and VS shows no warning nor publishing to azure notifies of anything. Is there anything that can be done to prevent dumb but yet very costly erros like this ?
TIA