Thursday, June 8, 2023
HomeiOS DevelopmentLearn how to use iCloud drive paperwork?

Learn how to use iCloud drive paperwork?


iCloud drive venture setup tutorial

Let’s begin by creating a brand new venture for iOS. You may choose the only view software template, don’t be concerned an excessive amount of about doc primarily based apps, as a result of on this tutorial we’re not going to the touch the UIDocument class in any respect. 🤷‍♂️

Step one is to allow iCloud capabilities, which is able to generate a brand new entitlements file for you. Additionally you will should allow the iCloud software service for the app id on the Apple developer portal. You also needs to assign the iCloud container that is going for use to retailer knowledge. Just some clicks, however it’s a must to do that manually. 💩

You want a legitimate Apple Developer Program membership with a purpose to set superior app capabilities like iCloud help. So it’s a must to pay $99/12 months. #greed 🤑

So I consider that now you might have a correct iOS app identifier with iCloud capabilities and software providers enabled. One final step is forward, it’s a must to add these few traces to your Data.plist file with a purpose to outline the iCloud drive container (folder identify) that you’ll use. Word which you can have a number of containers for one app.

<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.com.tiborbodecs.teszt</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
        <key>NSUbiquitousContainerName</key>
        <string>Teszt</string>
        <key>NSUbiquitousContainerSupportedFolderLevels</key>
        <string>Any</string>
    </dict>
</dict>

Lastly we’re prepared to maneuver ahead with some precise coding. 💻

Recordsdata inside iCloud drive containers

Working with iCloud recordsdata utilizing Swift is comparatively simple. Mainly you simply should get the bottom URL of your iCloud drive container, and you are able to do no matter you need. 🤔 Nevertheless I am going to present you some finest practices & methods.

First it’s a must to verify in case your container folder already exists, if not it’s best to create it by hand utilizing the FileManager class. I’ve additionally made a “shortcut” variable for the container base URL, so I haven’t got to write down all these lengthy phrases once more. 😅

var containerUrl: URL? {
    FileManager.default.url(
        forUbiquityContainerIdentifier: nil
    )?.appendingPathComponent("Paperwork")
}

if 
    let url = self.containerUrl, 
    !FileManager.default.fileExists(
        atPath: url.path, 
        isDirectory: nil
    ) {
    do {
        attempt FileManager.default.createDirectory(
            at: url, withIntermediateDirectories: true, 
            attributes: nil
        )
    }
    catch {
        print(error.localizedDescription)
    }
}

Working with paths contained in the iCloud drive container is straightforward, you may append path elements to the bottom URL and use that actual location URL as you need.

let myDocumentUrl = self.containerUrl?
    .appendingPathComponent(subDirectory)
    .appendingPathComponent(fileName)
    .appendingPathExtension(fileExtension)

Selecting current recordsdata can be fairly easy. You should use the built-in doc picker class from UIKit. There are solely two catches right here. 🤦‍♂️

First one is that you’ll want to present the kind of the paperwork that you simply’d wish to entry. Have you ever ever heard about UTI‘s? No? Perhaps sure…? The factor is that it’s a must to discover the correct uniform kind identifier for each file kind, as a substitute of offering an extension or mime-type or one thing generally used factor. Good one, huh? 🧠

let picker = UIDocumentPickerViewController(
    documentTypes: ["public.json"], 
    in: .open
)
picker.delegate = self
picker.modalPresentationStyle = .fullScreen
self.current(picker, animated: true, completion: nil)

The second catch is that it’s a must to “unlock” the picked file earlier than you begin studying it. That may be performed by calling the startAccessingSecurityScopedResource methodology. Do not forget to name the stopAccessingSecurityScopedResource methodology, or issues are going to be out of steadiness. You do not need that, belief me! #snap 🧤

func documentPicker(
    _ controller: UIDocumentPickerViewController, 
    didPickDocumentsAt urls: [URL]
) {
    guard
        controller.documentPickerMode == .open,
        let url = urls.first,
        url.startAccessingSecurityScopedResource()
    else {
        return
    }
    defer {
        url.stopAccessingSecurityScopedResource()
    }
    
}

Every little thing else works as you’d anticipate. It can save you recordsdata instantly into the container by file APIs or by utilizing the UIDocumentPickerViewController occasion. Listed below are among the most typical api calls, that you need to use to control recordsdata.


attempt string.write(to: url, atomically: true, encoding: .utf8)
attempt String(contentsOf: url)


attempt knowledge.write(to: url, choices: [.atomic])
attempt Knowledge(contentsOf: url)


FileManager.default.copyItem(at: native, to: url)
FileManager.default.removeItem(at: url)

You may learn and write any sort of string, knowledge. By utilizing the FileManager you may copy, transfer, delete gadgets or change file attributes. All of your paperwork saved inside iCloud drive can be magically obtainable on each machine. Clearly it’s a must to be logged in together with your iCloud account, and have sufficient free storage. 💰

Debugging

In case you alter one thing in your settings you may wish to increment your construct quantity as nicely with a purpose to notify the working system concerning the modifications. 💡

On the mac all of the iCloud drive recordsdata / containers are positioned beneath the person’s Library folder contained in the Cellular Paperwork listing. You may merely use the Terminal or Finder to go there and checklist all of the recordsdata. Professional tip: search for hidden ones as nicely! 😉

cd ~/Library/Cellular Paperwork
ls -la
# ls -la|grep tiborbodecs

You may also monitor the exercise of the CloudDocs daemon, by utilizing this command:

# man brctl
brctl log --wait --shorten

The output will let you know what’s truly taking place throughout the sync.

I encourage you to verify the handbook entry for the brctl command, as a result of there are just a few extra flags that may make troubleshooting simpler. 🤐

This text was closely impressed by Marcin Krzyzanowski‘s actually outdated weblog publish. 🍺





Supply hyperlink

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments