Simperium Shared Common Data Set - ios

Im interested in using Simperium on iOS6 to share a common set of data across multiple users and at the same time each user to have their own unique data too.
Is this possible?
I was considering having 2 data sets one connecting to the unique user account and then one connecting a common, shared account .....
What do you think !?

Common data for multiple users isn't yet possible in the production release of Simperium. Sharing and collaboration are currently being tested and will work in much the same way as device syncing.

Related

What is the best way to sync data among a small number of users in swift?

As the header indicates, I am looking for the simplest way to sync user-generated data (Integers, Booleans, NSDates, etc) among a small number of individuals (at this point, I am just thinking of sharing data between two people). Within the app, users can populate an array with instances of a custom object and this data is used to populate a UITableview. Assuming all users in the select group have synced their devices they should all see the same data in the tableview.
My original idea was to write to a json file in a shared Dropbox or Google Drive folder. After looking around online, however, I found that this method is likely to lead to data corruption. Cloudkit only allows public or private (single account) syncing, nothing in between. I have seen some posts that recommend using Parse, but that service is now on its way out.
Does anyone know of a (preferably free) way to do this?
You have several options:
CloudKit databases - CloudKit's database system has the concept of a public database which does exactly what you want. It's fairly easy to use as well, and is "free" with an Apple developer account. The only downside is that it's for Apple devices only (AFAIK).
Firebase - Google's Firebase is basically identical to CloudKit in concept and features, but runs on multiple platforms. It is tied to the Google ecosystem, so your uses all need to provide a Google account to use it, but that's a small issue these days.
Realm - from a pure usability perspective, Realm is BY FAR the easiest data storage solution I've seen on iOS. However, it's sharing functionality is currently limited, CloudKit support is scheduled but currently all there is is this. If you only need local storage for now, then definitely keep this on your list.
No matter which engine you choose, users would be limited to certain views of the data through your own code. I would suggest that you save every record with a username of the creator, and then have another table containing read/write permissions, so for instance, the entry for "maurymarkowitz" has "bobsmith,ronsmith,jonsmith". You can retrieve these entries on login and then use them as the inputs to the query-by-example both systems use for getting records.
Thanks for all of the helpful responses. I ended up using cloudkit/coredata and it serves my purpose just fine. I simply used the public option and gave each set of users who are sharing data with each other a unique identifier, which is appended to any records they upload. When a user syncs their data with the cloud the application performs a query for only those records that contain the user's identifier. This way, multiple users can sync data among themselves even though they do not share an iCloud account.

Core Data coexistence with network service for the "What if the user cannot connect?" situation

I am looking for the proper way for a swift iOS app that relies on, in my case: AWS but has a local persistent data store so that every possible feature of the app can be used offline.
So far, I went from a pillar or two of Core Data to a full core data stack and it is becoming difficult to foresee how to coexist with AWS DynamoDB. While DynamoDB is of a NoSQL structure, Core Data in the way I have set it up is that of a SQLite persistent data store.
I need to eventually download tables and primarily use AWS for most situations where users are online, but if they want to work offline, I need to be prepared. Perhaps I should try to create a singular User entity, because why would I want to store other users offline? Then once internet is active, I could try to push it to my DynamoDB Users (plural) table.
I have created Entity's in Core Data such as Users, Authors, Profile.
In the scenario a user opens the app and has no internet access, I am planning on inserting a Users entity and my goal is to correctly populate Authors and Profile, because this offline end user is definitely a User, and I want to setup at least a Profile for them as well so that they can later tweak with customizations.
I have maybe too many relationships. I want to do this correct.
In simple situations, I understand a Person Entity might have a father, mother, child and how they can all fit nicely into Person, but since I have entities with enough unique attributes that I thought I need to create their own entities,
How should I go about creating an entity that certainly makes a User/Users record and establishes a Profile?
Short answer is this:
Core Data is your local cache whether you are offline or online. If you are online then the app should refresh the Core Data cache when appropriate.
When offline the app should not update the cache.
The User Interface in either case is identical. The user interface feeds from the Core Data cache ONLY.
I suggest watching my talk on MVC-N that is hosted by realm.io.

link 2 iPhones for a single iOS app database

I'm developing an app for my summer iPhone class that is designed for couples, and am not sure the best way to have two different users phones reading and writing to the same database for a single account. The two users create and grant points to each other for "rewards", "penalties" and "prizes". I'm attempting to put the local databases into CoreData and then push it into iCloud. However, I'm only finding ways that that works for a single persons app. This is a two player game that needs to update a shared database. I would greatly appreciate if you would have any suggestions on ways to either send notifications directly to each and maintain congruent separate local databases, or to have a single back end database for two users in a single account that both users' phone can push and pull from to read and write. I'm having trouble finding the right path to pursue for this.
Thanks.
You can easily save Database on server side with the help of many mechanism like PHP Script is the best example for this.
link - Advices on server implementation for server/client structure iOS App development?
There is a third-party framework for iOS called Parse. It's a terrific backend service that adds a cloud database. You can create objects and store it in the cloud and access it anytime, and it comes with push notifications and analytics functionality. It's tuned for many platforms, including iOS and it's straightforward to access all of its functionalities.
The site is here: https://parse.com
Whenever you try to use one database for multiple device, you need to create / save database in server side or you can try Parse. because local database is always used for device specific.

One way sync with Core Data

I am about to build an internal-only iOS app for storing simple business data. The data store will consist of a single entity only, with one entry per day. To start with there will be around two years worth of data (~750 entries).
I want to set the app up to do one-way syncing only. i.e. Only one person can enter data, but others can read it. iCloud is out as it only works for a single user account.
Is there a lightweight way to sync this datastore out from the single write user to the other read users? Setting up a full sync system seems overkill for this case.
Instead of iCloud, you could use one of the online backends such as Parse.com or Simperium. They would allow you to share data using a db and also provide for user accounts, authentication etc. If you want to run the server locally you can investigate DataKit.

Can I share CoreData on iCloud?

I have an iPhone app I'm writing that needs to keep an offline data store that users of a specific licensed app can access.
I need a "Cloud" account where several users with different accounts can share the data. Is this possible?
I Googled and searched SO, but can find nothing about this particular topic.
An iCloud account is tied to a single user.
If you are asking whether you can set up an iCloud account that can be shared across multiple users; there isn't such a thing.
If you don't want to be responsible for syncing and vending the data yourself, have a look at Dropbox - where users can set up shared dropbox folders to do something similar to what you are asking about.
However, just putting the CD store on a Dropbox folder won't be enough to handle merge conflicts if different users modify the same value. In which case one solution is to have a web service that updates can be sent to, merges resolved, and the data pushed back down to the devices to be stored in their own Core Data stores.
A bit more involved than just putting the store in the cloud - but this stuff is difficult.
you need to start off with icloud
one of the best tutorials on net is:
http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1
http://www.raywenderlich.com/6031/beginning-icloud-in-ios-5-tutorial-part-2
sample icloud project
http://cdn3.raywenderlich.com/downloads/dox.zip
best of luck

Resources