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











up vote
0
down vote

favorite












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







New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















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










  • 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
    yesterday












  • 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
    yesterday










  • 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
    yesterday












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

















up vote
0
down vote

favorite












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







New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















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










  • 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
    yesterday












  • 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
    yesterday










  • 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
    yesterday












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















up vote
0
down vote

favorite









up vote
0
down vote

favorite











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







New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











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







New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Aditi Gupta

1




1




New contributor




Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Aditi Gupta is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












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










  • 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
    yesterday












  • 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
    yesterday










  • 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
    yesterday












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




















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










  • 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
    yesterday












  • 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
    yesterday










  • 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
    yesterday












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


















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




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












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
yesterday






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
yesterday














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
yesterday




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
yesterday












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
yesterday






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
yesterday














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






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














1 Answer
1






active

oldest

votes

















up vote
0
down vote













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





















    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',
    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
    });


    }
    });






    Aditi Gupta is a new contributor. Be nice, and check out our Code of Conduct.










     

    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

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    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

























      up vote
      0
      down vote













      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























        up vote
        0
        down vote










        up vote
        0
        down vote









        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 yesterday









        Maxim Volgin

        1,6501119




        1,6501119






















            Aditi Gupta is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            Aditi Gupta is a new contributor. Be nice, and check out our Code of Conduct.













            Aditi Gupta is a new contributor. Be nice, and check out our Code of Conduct.












            Aditi Gupta is a new contributor. Be nice, and check out our Code of Conduct.















             


            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

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

            Calculate evaluation metrics using cross_val_predict sklearn

            Insert data from modal to MySQL (multiple modal on website)