Programatically access (your own) iCloud data from a desktop or from a server?
Asked Answered
D

3

6

I want to access and manipulate, FROM A SERVER OR FROM MY DESKTOP MACHINE, my iPhone's iCloud data programmatically.

For example...

http://www.phonesheriff.com/investigator.html

Does anyone know if it is possible? Is there any API or mechanism by which I can use MY OWN iCloud username and password to access MY OWN iCloud data (from a desktop machine, or from a server).

I want to see and manipulate the actual data like photos, sms and contacts etc. I have seen some apps that do that. Can someone tell me how it is possible?

To be clear: the software I am trying to write is not intended for an iOS device, rather for on a server or on a desktop client (windows or mac).

Dunlap answered 18/3, 2014 at 6:18 Comment(0)
M
4

I don't believe you will have access to the entirety of your iCloud data. The iCloud API generally uses a local sandbox container called a "ubiquity container" that is specific to your app (or a group of apps if you set it up that way). You can persist and retrieve to/from that local container and iOS manages the majority of syncing that container with iCloud.

Apple docs

To answer the rest of your question, just use the iCloud API or a project like iCloudDocumentSync to manage your interaction with iCloud.

Mak answered 18/3, 2014 at 6:38 Comment(12)
I want to create a desktop application that will automatically download my own icloud data to my system once I have authenticated with my icloud username and password.Is it possible?Dunlap
What do you mean "my own icloud data"? You mean data that you have persisted to iCloud using your app? Then the answer is yes. But if you mean data persisted to iCloud from some other app, I don't believe you will have access to it.Mak
I mean my iphone's data like contacts,sms,photos and calender events.Dunlap
You cannot access that information via iCloud. You can access some of it by other APIs (see, e.g., AddressBook.framework for contacts). Once you access it by those other APIs, you can persist it to iCloud in your app and retrieve your persisted version from iCloud.Mak
I have seen apps do that.It is possible.Dunlap
How could you detect whether another app is pulling contact data from iCloud or from contacts? Just because contacts appear in an app doesn't mean it was loaded via iCloud. For example, iOS can automatically sync contacts across devices via iCloud, and you can retrieve those synced contacts via the AddressBook API, but that doesn't mean you're retrieving the contacts via the iCloud API. And if I'm mistaken and there is a way to do it via iCloud, well, I simply don't know it.Mak
ripoffreport.com/r/Phone-Sheriff/internet/… ? Read the fine print, the phones have to be jailbroken for this to work: phonesheriff.com/compatibility.html#phoneosMak
@Mak There is an investigator edition that runs on desktop.See the question how does phone sheriff work in faqs. phonesheriff.com/investigator.htmlDunlap
@Mak or go to the bottom of the page to see all three steps.This is a desktop app.Dunlap
Honestly, I don't have an answer for you, but I will definitely say that I am very wary of trusting that app. Why would they advertise that you have to jailbreak your phone but then have an "investigator" version that does everything but doesn't need the phone to be jailbroken? That makes no sense. Maybe it's possible...that site just seems untrustworthy.Mak
@Mak The app actually has a 7 day free trial and it works.Dunlap
@Mak The investigator edition does not do everything that the jailbroken version does.It only gets a small number of features and relies on icloud backup to function.Dunlap
P
4

On OS X you can do this via normal file system calls. All iCloud data for your account is stored in ~/Library/Mobile Documents/. And OS X's ubiquity daemon automatically downloads all data in the account, so there's no need to make any special API call to get it all downloaded. In there you'll find all data that every app using your iCloud account has uploaded, exactly as they formatted it. There's no special iCloud encryption or anything.

Making sense of that data is up to you. For apps that use Core Data, for example, what you'll find are transaction logs and not a standard persistent store file. Those are undocumented. For other apps, who knows? It's whatever the developer thought made sense.

If you're not using sandboxing, that's all there is to it. But then of course, you can't get into the app store with your code. If you're using sandboxing I'm not sure if you can get access. You might be able to make it work if you can prompt the user to open ~/Library/Mobile Documents/ in your app, but no promises there.

Perfoliate answered 18/3, 2014 at 19:44 Comment(0)
A
1

Theoretically, yes.

I'm building a project to do just that. You can check it out here with Java. There's also a Ruby project being developed aside it. You can find that here. If you don't want to wait, you can do it manually. Although the program (EPPB) costs $100, a steep price in my opinion.

TL;DR: Not yet

Aloft answered 2/4, 2014 at 14:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.