iCloud Alternative for core data like data synchronization - core-data

I am planning to develop an app which will use a database.
This database will need to be synchronized accross multiple devices.
I need something like iCloud + CoreData but able to work also from Android and Windows
Do you know if this magical thing exists?
Thanks

if it's ok that you need to be connected (no fully offline mode) - StackMob can be of help to you.
their iOS SDK even provide CoreData interfaces, and if you don't like them - you have REST APIs
Also may be you should look at:
- Simperium (no Android SDK, only REST APIs,)
- Parse.com

Related

Do I need any iCloud settings before using Ensembles for CoreData & iCloud syncing?

I'm developing an app which uses CoreData and is already released. I'm trying to add syncing feature using iCloud and Ensembles 1.x. I added codes which are told in the readme, but syncing doesn't happen. The debug log says it can't leech to ensemble.
I enabled iCloud for the project, but only for Key-value storage which is used for another purpose. Do I need to enable other services such as iCloud Documents or CloudKit?
Also, I have this line like sample codes do, and wondering ubiquityContainerIdentifier shouldn't be nil. But I have no idea what I should pass. Could you please give me any advices?
cloudFileSystem = CDEICloudFileSystem(ubiquityContainerIdentifier: nil)
Thank you in advance.
You do need to have iCloud Documents enabled.
See the Simple Sync example app to see the things you have to setup.
I think passing nil should work. That will choose the default iCloud container for you (e.g. iCloud.com.mycompany.myapp). If you need a different container, just set that up in your capabilities for the target, and use that.
Note also there is a free book at http://leanpub.com/ensembles

Convert Objective C project to Xamarin

We have an app written in Objective C. It uses CoreData, RestKit, about 10 viewcontrollers.
We would like to migrate it to Xamarin (so we can target Android and Windows).
I was hoping there was a way to bind the current code to a Xamarin solution and kind of rewrite features step by step within Xamarin (eg: replacing a viewcontroller at a time, and at the end replacing RestKit+CoreData, by SQLite + ServiceStack).
I am aware of the binding to Objective C option that they provide, however, it doesn't look to be the appropriate fit for this (way too complex, probably easier to rewrite the app from scratch).
Is there a way to migrate our current project to Xamarin so we can convert? or do we start from scratch?
Thanks.
Options:
Migrate full project - no;
Automatically create binding for libraries, rewrite business-code, UI-code - yes;
Rewrite from scratch using .Net/Mono classes - yes.
If code size is relatively small, you should rewrite the whole app. Moreover, thus you could have a chance to separate business-logic from UI code and tools libraries (RestKit, CoreData). In perspective, that code will be more reliable and cross-platformish.
This tool can help. It does Obj-c to C# translation (some manual cleanup required):
Automagical
Quite probably, a re-write, from scratch. One thing to keep in mind, if your back-end is .net.. and you are using DTO's.. like with AutoMapper from Entity Framework objects.. you'll be able to re-use those DTO objects on your mobile side with Xamarin. If you are using OData, I'm not sure if this is still a problem, but Xamarin studio wasn't generating OData service clients. So you had to generate them in Visual Studio, then take the generated client code and throw them into your Mobile projects.
sqllite-net is awesome. I've never had any problems with it.
https://github.com/praeclarum/sqlite-net
I currently have a project, with DTO Objects from an Azure WCF service, that I push directly down into SQLLite objects on IOS and Android with Xamarin. I use RestSharp, rather than Service Stack. I should probably go learn the difference.
If you are looking to use SQLCipher from the Component store, to encrypt your sqllite db locally on your device (Good advice to do so), you should be aware that there is an issue in android.. going to 2.2 or 2.3 with SQLCipher. Works for ICS and above though, if I remember right.
Just be careful on your security implementation for allowing clients to connect. I want to say.. don't take too much advice.. and don't take too little either. : )

Windows 8/RT + Phone 8 app - sync data

Hi im developing a todo/reminder app for both Windows 8 (RT) and Windows Phone 8.
I want to enable the user to sync their todo-items between these two.
I know there is a roaming application data storage for Windows 8, but is it possible to access it from the phone?
Another idea i had was creating an xml file and uploading it to skydrive, but then i would have no push functionality :(
And there is also Azure which seems to be the most complicated solution..
What way is the best to choose?
Thanks for your help
You can use Live SDK (SkyDrive) and Windows Azure Mobile Services to accomplish this. The Live SDK will allow you to upload and retrieve items from SkyDrive and you can use mobile services for push notifications. Here is an example of what you want to do.
I know that the thread is a bit old, but it still pops up in search results. So, here's the answer.
I had exactly the same problem. So, I have developed a small library which does exactly that - synchronizing the data between Windows Phone and Windows Azure. Code is on GitHub and here is a nicely packed NuGet package. You could easily port it to WinRT and use SQLite as local data storage.
API is very simple. You just call methods to do CRUD operations and when you are done, you call SynchronizeAsync to synchronize data with WAMS. The synchronization goes both ways. In case of conflict, the latest copy gets the preference.
In the meantime Windows Phone 8.1 is released and it changes the answer to your question - today there are universal apps and they share the same roaming storage on both Phone and regular Windows.
You're going to want to use Mobile Services (www.windowsazure.com/mobile) for this scenario. After you login at manage.windowsazure.com, grab the WinStore C# SDK and WP8 SDK. You're going to need to point both to the same SQL db and Mobile Service. Of course, if you need blob or table storage as well, that's supported. You'd just access those through scripts under the DATA tab.
To check out a production app that's already doing this, I'd point your to Slot Machine by the SeeSharpGuys.
Win Store: http://apps.microsoft.com/windows/en-US/app/slot-machine/7c60012a-00bd-4cae-a402-a9885ec11ea1
WP8: http://www.windowsphone.com/en-us/store/app/slot-machine-mobile/9fa24191-d08d-4073-8098-740975e41946

NoSQL databases that officially support MonoTouch

I am having trouble finding a NoSQL databases that officially support MonoTouch via a local DB on the device. If their are, could someone provide a list of them here.
According to http://nosql-database.org/ there's siaqodb. Note that others might support MonoTouch without being mentioned in that site.
Edit: a few more clicks shows that HSS Database (from the same list) also supports MonoTouch.
You might also want to look at which ones support iOS (e.g. with Objective C) and see if bindings are available (or write your own).
Take a look on Couchbase Lite xamarin's component
RavenDB supports an embedded mode, and can run on Mono using the "Munin" storage engine option.
Although, there has been talk in the user group lately about dropping Munin, and it's not usually recommended for production, so it may not be a viable option.
I've not heard of someone using it with MonoTouch specifically, but there are some running it on Mono. If you try it, please update comments here with your findings. Thanks.
A bit late, but still relevant:
I'm the author of MarcelloDB, and I just released version 0.3.0 on nuget.
MarcelloDB is a document DB, built specifically for mobile apps (light-weight, low memory usage) and supports Xamarin Android and iOS as well as the windows platform.
I still have some features I want to add before reaching v1, but the file format and existing api are allready quite stable.

db4o DotNet version with Xamarin MonoDroid and MonoTouch

Does anyone already used db4o OO database manager in a mobile project using Xamarin Monodroid and/or MonoTouch?
Is it even possible? (It seems that db4o uses Reflection.Emit(), which could be a problem)
Thanks for your comments on this.
If you plan on your app taking to a database directly, you might be better off to setup a web service (for security reasons you don't want your database accessible over a public ip address).
If you are going to work with a local database within the app to store data, use SQLite and sqlite-net.

Resources