Which is the best iCloud approach for my iOS notes app with text, photo, audio & drawing notes. Should I...












0















I am developing an iOS notes app where a user can add image, text, audio and drawing notes. I want to implement iCloud synchronization between multiple devices. Out of the 3 options (key value, document storage, CloudKit) which one should I choose? I would like to implement the sharing of notes (collaboration) among users as well. I am using core data as my DB currently.










share|improve this question























  • What do you mean by document storage? Storing in iCloud Drive?

    – LinusGeffarth
    Nov 21 '18 at 9:37











  • Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

    – Aditi Gupta
    Nov 21 '18 at 9:55













  • I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

    – LinusGeffarth
    Nov 21 '18 at 10:08











  • Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

    – Aditi Gupta
    Nov 21 '18 at 11:06













  • You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

    – LinusGeffarth
    Nov 21 '18 at 11:07


















0















I am developing an iOS notes app where a user can add image, text, audio and drawing notes. I want to implement iCloud synchronization between multiple devices. Out of the 3 options (key value, document storage, CloudKit) which one should I choose? I would like to implement the sharing of notes (collaboration) among users as well. I am using core data as my DB currently.










share|improve this question























  • What do you mean by document storage? Storing in iCloud Drive?

    – LinusGeffarth
    Nov 21 '18 at 9:37











  • Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

    – Aditi Gupta
    Nov 21 '18 at 9:55













  • I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

    – LinusGeffarth
    Nov 21 '18 at 10:08











  • Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

    – Aditi Gupta
    Nov 21 '18 at 11:06













  • You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

    – LinusGeffarth
    Nov 21 '18 at 11:07
















0












0








0








I am developing an iOS notes app where a user can add image, text, audio and drawing notes. I want to implement iCloud synchronization between multiple devices. Out of the 3 options (key value, document storage, CloudKit) which one should I choose? I would like to implement the sharing of notes (collaboration) among users as well. I am using core data as my DB currently.










share|improve this question














I am developing an iOS notes app where a user can add image, text, audio and drawing notes. I want to implement iCloud synchronization between multiple devices. Out of the 3 options (key value, document storage, CloudKit) which one should I choose? I would like to implement the sharing of notes (collaboration) among users as well. I am using core data as my DB currently.







ios iphone icloud cloudkit icloud-documents






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 21 '18 at 9:31









Aditi GuptaAditi Gupta

1




1













  • What do you mean by document storage? Storing in iCloud Drive?

    – LinusGeffarth
    Nov 21 '18 at 9:37











  • Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

    – Aditi Gupta
    Nov 21 '18 at 9:55













  • I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

    – LinusGeffarth
    Nov 21 '18 at 10:08











  • Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

    – Aditi Gupta
    Nov 21 '18 at 11:06













  • You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

    – LinusGeffarth
    Nov 21 '18 at 11:07





















  • What do you mean by document storage? Storing in iCloud Drive?

    – LinusGeffarth
    Nov 21 '18 at 9:37











  • Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

    – Aditi Gupta
    Nov 21 '18 at 9:55













  • I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

    – LinusGeffarth
    Nov 21 '18 at 10:08











  • Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

    – Aditi Gupta
    Nov 21 '18 at 11:06













  • You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

    – LinusGeffarth
    Nov 21 '18 at 11:07



















What do you mean by document storage? Storing in iCloud Drive?

– LinusGeffarth
Nov 21 '18 at 9:37





What do you mean by document storage? Storing in iCloud Drive?

– LinusGeffarth
Nov 21 '18 at 9:37













Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

– Aditi Gupta
Nov 21 '18 at 9:55







Apple provides the following iCloud storage APIs - 1) Key value Storage 2) iCloud document storage (mostly for document based apps) 3) CloudKit Storage. See link developer.apple.com/library/archive/documentation/General/… . The link specifies the difference the three options.

– Aditi Gupta
Nov 21 '18 at 9:55















I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

– LinusGeffarth
Nov 21 '18 at 10:08





I tried out iCloud's key-value storage option. It doesn't suit apps that are looking for instant sync between devices as we cannot manually fetch the data, so I'd not recommend that option. iCloud Drive (document storage visible to the user) might be suitable, if you don't mind that the user has direct access to the files. That can get quite messy, though, with many files. From a UX perspective, I'd not recommend that either. Idk about CloudKit, but it's the only option left. Or: use your own server and database. That's the most flexible option you have, but requires the most effort.

– LinusGeffarth
Nov 21 '18 at 10:08













Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

– Aditi Gupta
Nov 21 '18 at 11:06







Thank you so much for the response! If I use iCloud Drive (document storage with iCloud), how will things work if the user is offline or logged out of iCloud account?

– Aditi Gupta
Nov 21 '18 at 11:06















You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

– LinusGeffarth
Nov 21 '18 at 11:07







You're welcome. I'm not sure about that. You'll have to try it yourself or do more research. Sorry.

– LinusGeffarth
Nov 21 '18 at 11:07














2 Answers
2






active

oldest

votes


















0














Key-value storage is out of question due do being too limited for your goal, document storage is only recommended when you need to handle and store the document as a whole. Since you are already using CoreData for local storage, it only makes sense to use regular CloudKit with it for cloud storage and sharing.



Synchronisation of CoreData and CloudKit can be tough. I am personally using a combo of RxCoreData and RxCloudKit libraries which provide some relief in synchronisation and some syntax sugar too.



A word in advance about uniqueness constraints: for CoreData, you define them based on key(s) or hash of all values, for CloudKit it is only possible (and also required) for the CKRecord key, to the best of my knowledge. So it is best to take care of it from the very start.






share|improve this answer
























  • Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

    – Aditi Gupta
    Nov 30 '18 at 10:09





















0














IMHO, CloudKit is the only opinion :)



I have a note app named marknote. And at the beginning I used iCloud document storage. It worked sometime, but not stable. The worst thing is, when and whether your documents can be synced is out of your control, instead it relies on Apple's daemon service. It becomes even worse when your documents are a little big, for instance several mega bytes.
So after fighting for some time, I changed to CloudKit. As @maxim-volgin has already pointed out, the implementation of CloudKit sync is tough, but it is reliable. And all headache just gone after switching to CloudKit.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53408948%2fwhich-is-the-best-icloud-approach-for-my-ios-notes-app-with-text-photo-audio%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Key-value storage is out of question due do being too limited for your goal, document storage is only recommended when you need to handle and store the document as a whole. Since you are already using CoreData for local storage, it only makes sense to use regular CloudKit with it for cloud storage and sharing.



    Synchronisation of CoreData and CloudKit can be tough. I am personally using a combo of RxCoreData and RxCloudKit libraries which provide some relief in synchronisation and some syntax sugar too.



    A word in advance about uniqueness constraints: for CoreData, you define them based on key(s) or hash of all values, for CloudKit it is only possible (and also required) for the CKRecord key, to the best of my knowledge. So it is best to take care of it from the very start.






    share|improve this answer
























    • Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

      – Aditi Gupta
      Nov 30 '18 at 10:09


















    0














    Key-value storage is out of question due do being too limited for your goal, document storage is only recommended when you need to handle and store the document as a whole. Since you are already using CoreData for local storage, it only makes sense to use regular CloudKit with it for cloud storage and sharing.



    Synchronisation of CoreData and CloudKit can be tough. I am personally using a combo of RxCoreData and RxCloudKit libraries which provide some relief in synchronisation and some syntax sugar too.



    A word in advance about uniqueness constraints: for CoreData, you define them based on key(s) or hash of all values, for CloudKit it is only possible (and also required) for the CKRecord key, to the best of my knowledge. So it is best to take care of it from the very start.






    share|improve this answer
























    • Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

      – Aditi Gupta
      Nov 30 '18 at 10:09
















    0












    0








    0







    Key-value storage is out of question due do being too limited for your goal, document storage is only recommended when you need to handle and store the document as a whole. Since you are already using CoreData for local storage, it only makes sense to use regular CloudKit with it for cloud storage and sharing.



    Synchronisation of CoreData and CloudKit can be tough. I am personally using a combo of RxCoreData and RxCloudKit libraries which provide some relief in synchronisation and some syntax sugar too.



    A word in advance about uniqueness constraints: for CoreData, you define them based on key(s) or hash of all values, for CloudKit it is only possible (and also required) for the CKRecord key, to the best of my knowledge. So it is best to take care of it from the very start.






    share|improve this answer













    Key-value storage is out of question due do being too limited for your goal, document storage is only recommended when you need to handle and store the document as a whole. Since you are already using CoreData for local storage, it only makes sense to use regular CloudKit with it for cloud storage and sharing.



    Synchronisation of CoreData and CloudKit can be tough. I am personally using a combo of RxCoreData and RxCloudKit libraries which provide some relief in synchronisation and some syntax sugar too.



    A word in advance about uniqueness constraints: for CoreData, you define them based on key(s) or hash of all values, for CloudKit it is only possible (and also required) for the CKRecord key, to the best of my knowledge. So it is best to take care of it from the very start.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 21 '18 at 14:16









    Maxim VolginMaxim Volgin

    1,8541220




    1,8541220













    • Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

      – Aditi Gupta
      Nov 30 '18 at 10:09





















    • Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

      – Aditi Gupta
      Nov 30 '18 at 10:09



















    Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

    – Aditi Gupta
    Nov 30 '18 at 10:09







    Thanks for the response! It was helpful. Could you please also throw light on iCloud Document storage approach using File coordination (NSFileCoordinator)? With File coordination, conflicts can be handled automatically to a huge extent, whereas in CloudKit all conflicts need to be handled manually.

    – Aditi Gupta
    Nov 30 '18 at 10:09















    0














    IMHO, CloudKit is the only opinion :)



    I have a note app named marknote. And at the beginning I used iCloud document storage. It worked sometime, but not stable. The worst thing is, when and whether your documents can be synced is out of your control, instead it relies on Apple's daemon service. It becomes even worse when your documents are a little big, for instance several mega bytes.
    So after fighting for some time, I changed to CloudKit. As @maxim-volgin has already pointed out, the implementation of CloudKit sync is tough, but it is reliable. And all headache just gone after switching to CloudKit.






    share|improve this answer




























      0














      IMHO, CloudKit is the only opinion :)



      I have a note app named marknote. And at the beginning I used iCloud document storage. It worked sometime, but not stable. The worst thing is, when and whether your documents can be synced is out of your control, instead it relies on Apple's daemon service. It becomes even worse when your documents are a little big, for instance several mega bytes.
      So after fighting for some time, I changed to CloudKit. As @maxim-volgin has already pointed out, the implementation of CloudKit sync is tough, but it is reliable. And all headache just gone after switching to CloudKit.






      share|improve this answer


























        0












        0








        0







        IMHO, CloudKit is the only opinion :)



        I have a note app named marknote. And at the beginning I used iCloud document storage. It worked sometime, but not stable. The worst thing is, when and whether your documents can be synced is out of your control, instead it relies on Apple's daemon service. It becomes even worse when your documents are a little big, for instance several mega bytes.
        So after fighting for some time, I changed to CloudKit. As @maxim-volgin has already pointed out, the implementation of CloudKit sync is tough, but it is reliable. And all headache just gone after switching to CloudKit.






        share|improve this answer













        IMHO, CloudKit is the only opinion :)



        I have a note app named marknote. And at the beginning I used iCloud document storage. It worked sometime, but not stable. The worst thing is, when and whether your documents can be synced is out of your control, instead it relies on Apple's daemon service. It becomes even worse when your documents are a little big, for instance several mega bytes.
        So after fighting for some time, I changed to CloudKit. As @maxim-volgin has already pointed out, the implementation of CloudKit sync is tough, but it is reliable. And all headache just gone after switching to CloudKit.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 26 '18 at 7:46









        marknotemarknote

        74358




        74358






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53408948%2fwhich-is-the-best-icloud-approach-for-my-ios-notes-app-with-text-photo-audio%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

            Alcedinidae

            RAC Tourist Trophy