Apple iCloud-Dienst

Aktualisierte

Die API unterstützt das Abrufen einer Vielzahl von Daten und Dateien aus den iCloud-Diensten von Apple.

Sitzungen

Das Einrichten einer Sitzung für die iCloud-Dienste auf der API ist so einfach wie das Anmelden bei einem iCloud-Konto. Der Vorgang kann mehrere Versuche zum Erstellen der Sitzung erfordern, wenn das Konto die Multifaktorauthentifizierung wie 2FA oder 2SV aktiviert hat.

Erstellen einer Sitzung für ein Konto ohne 2FA / 2SV

Die Sitzungsnutzlast zum Erstellen einer Sitzung für ein Konto ohne aktiviertes 2FA / 2SV enthält die folgenden Parameter.

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Antwort

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Erstellen einer Sitzung für ein Konto bei 2FA

Das Erstellen einer Sitzung für ein 2FA-fähiges Konto erfolgt in zwei Schritten:

  1. Versuchen Sie, eine Sitzung nur mit dem Kennwort des iCloud-Kontos zu erstellen. Dies löst den 2FA-Prozess aus, der einen Authentifizierungscode an iOS- und MacOS-Geräte sendet, die dem Konto zugeordnet sind. Der Versuch zur Sitzungserstellung schlägt mit error="code-required" fehl.
  2. Verwenden Sie das iCloud-Kontokennwort und den in (1) empfangenen Authentifizierungscode, um eine Sitzung zu erstellen. Wenn der Code akzeptiert wird, wird die Sitzung erfolgreich erstellt.

Schritt 1: Sitzung erstellen

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Antwort

Wenn der 2FA-Prozess wie erwartet ausgelöst wird, sollte die Sitzung nicht mit dem Fehler erstellt werden: code-required .

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Schritt 2: Sitzung mit Code erstellen

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.
code Zeichenfolge Der Authentifizierungscode.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "code": "<authentication code>"
  }
}'

Antwort

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Erstellen einer Sitzung für ein Konto bei 2SV

Das Erstellen einer Sitzung für ein 2SV-fähiges Konto umfasst drei Schritte:

  1. Versuchen Sie, eine Sitzung mit dem Kennwort des iCloud-Kontos zu erstellen. Da 2SV erforderlich ist, schlägt dies mit error="choice-required" und error_info={"choices": [<2SV enabled devices>]} .
  2. error_info["choices"] erneut, eine Sitzung mit dem iCloud- error_info["choices"] und einer Auswahl aus der Liste error_info["choices"] zu erstellen. Diesmal löst der Versuch den 2SV-Prozess aus, der einen Authentifizierungscode an das ausgewählte Gerät sendet. Der Versuch schlägt mit error="code-required" fehl.
  3. Verwenden Sie das iCloud-Kontokennwort und den in (2) empfangenen Authentifizierungscode, um eine Sitzung zu erstellen. Wenn der Code akzeptiert wird, wird die Sitzung erfolgreich erstellt.

Dies löst den 2SV-Prozess aus, der einen Authentifizierungscode an iOS- und MacOS-Geräte sendet, die dem Konto zugeordnet sind. Der Versuch zur Sitzungserstellung schlägt mit error="code-required" fehl.

Schritt 1: Sitzung erstellen

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Antwort

Wenn 2SV für das Konto aktiviert ist, schlägt der Versuch zur Sitzungserstellung mit choice-required Fehlerauswahl fehl.

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "choice-required",
  "error_info": {
    "choices": [
      "********02 - SMS to Phone Number"
    ]
  }
  ...
}

Schritt 2: Sitzung mit Auswahl erstellen

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.
choice Zeichenfolge Das ausgewählte Gerät, an das ein Authentifizierungscode gesendet werden soll.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "choice": "********02 - SMS to Phone Number"
  }
}'

Antwort

Wenn der 2FA-Prozess wie erwartet ausgelöst wird, sollte die Sitzung nicht mit dem Fehler erstellt werden: code-required .

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Schritt 3: Sitzung mit Code erstellen

Name Art Beschreibung
password Zeichenfolge Das iCloud-Kontokennwort.
code Zeichenfolge Der Authentifizierungscode.

CURL verwenden

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "code": "<authentication code>"
  }
}'

Antwort

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Quelltypen

Kennung Beschreibung
icloud.account Primärquelle Entspricht einem iCloud-Konto.

Umfragen

Der iCloud-Dienst unterstützt alle Attribute des Poll-Payload-Schemas.

Quelleninformationen werden abgerufen

Dieser Abfragetyp ruft Informationen zur Zielquelle ab. Die Ergebnisse werden im JSON-Format veröffentlicht.

CURL verwenden

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "session": "<session ID>",
  "payload": {
    "info_types": ["*"]
  }
}'

Verwendung von * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll = ricloud.Poll.create(
  session=session_id,
  payload={
    "info_types": ["*"]
  }
)

Daten abrufen

Dieser Abfragetyp ruft Daten aus der Zielsitzung ab und verarbeitet sie. Die Ergebnisse werden im JSON-Format veröffentlicht.

Weitere Informationen zu bestimmten Datentypen finden Sie in der Liste der verfügbaren Datentypen .

CURL verwenden

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "session": "<session ID>",
    "payload": {
        "data_types": ["icpl.photos"]
    }
}'

Verwendung von * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll_payload = {
    "data_types": ["icpl.photos"]
}

poll = ricloud.Poll.create(
  session=session_id,
  payload=poll_payload,
)

Dateien werden abgerufen

Das Attribut "Pay-Payload" für files wird verwendet, um das Abrufen von Binärdateien von der Zielquelle anzufordern.

Die IDs werden normalerweise aus einer früheren Umfrage für Datentypen abgerufen, die direkte Dateiverweise wie iCloud Photo Library oder Anhänge wie Nachrichtendatentypen enthalten.

CURL verwenden

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "session": "<session ID>",
    "payload": {
        "files": [
            "icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE",
            "icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6"
        ]
    }
}'

Verwendung von * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll_payload = {
    'files': [
        'icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE',
        'icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6',
    ]
}

poll = ricloud.Poll.create(
    session=session_id,
    payload=poll_payload,
)

Datentypen

iCloud-Datentypen

Kennung Beschreibung
icpl.photos Ruft iCloud Photo Library-Assets ab.
mme_contacts.contacts Ruft in iCloud gespeicherte iOS-Kontaktdaten ab.
mme_calendar.events Ruft in iCloud gespeicherte iOS-Kalenderdaten ab.
mme_notes.notes Ruft in iCloud gespeicherte iOS Notes-Daten ab.
callkit.calls Ruft mit CallKit synchronisierte iOS-Telefondaten ab.
cloudkit_safari.history Rufen Sie in iCloud gespeicherte Safari-Browserverlaufsdaten ab.
fmip.devices Abrufen von Find My iPhone-Geräte- und Standortdaten.

iCloud-Fotobibliothek

Fotos, Videos und andere Medien

Ruft Informationen zu Fotos, Videos und anderen Medien ab, die in der iCloud Photo Library (ICPL) gespeichert sind.

Für dieses Modul muss die iCloud-Fotobibliothek im iCloud-Konto des Benutzers aktiviert sein.

Datentyp-ID icpl.photos
Zugehörige Einstellung Settings > [username] > iCloud > Photos > iCloud Photo Library

Datenattribute

Name Art Beschreibung
id Zeichenfolge Eine Kennung für das Datenelement. Nützlich zum Deduplizieren von Daten über mehrere Umfragen hinweg.
filename Zeichenfolge Der Name der Datei, wie sie in ICPL gespeichert ist.
files Liste der image , video und audio Mit diesem ICPL-Asset verknüpfte Dateien. Die Originaldatei, Live-Fotos und Miniaturansichten werden in diese Liste aufgenommen.
date_created Terminzeit Wann die Datei ursprünglich erstellt wurde. Bei Fotos oder Videos, die auf einem iOS-Gerät aufgenommen wurden, ist dies das Datum, an dem sie aufgenommen wurden. Bei vorhandenen Assets, die in ICPL importiert werden, ist dies das ursprüngliche Importdatum.
date_uploaded Terminzeit Wann wurde die Datei zuletzt auf ICPL hochgeladen? Dies entspricht dem Zeitpunkt, zu dem die Datei zum ersten Mal über die Ricloud-API abgerufen werden konnte.
local_date_created optional datetime When the asset was originally created, in local time. This attribute is only populated if sufficient metadata is stored with the asset in ICPL, and is currently supported for parsing by the API. The value of this attribute can vary by a few seconds from that of date_created, as the two are determined from different sources.

Datenfilter

Name Art Beschreibung
since Terminzeit Enthält nur Elemente mit einem date_uploaded später als der angegebene Wert date_uploaded wird.
until Terminzeit Enthält nur Elemente mit einem date_uploaded das vor dem angegebenen Wert date_uploaded .

Beispieldaten

[
  {
    "id": "7f1384f5038255f5",
    "data_type": "icpl.asset",
    "filename": "IMG_0002.HEIC",
    "files": [
      {
        "id": "icpl://AWo/lDeN8fEExAUJajRHzVx2j605",
        "data_type": "image",
        "extension": "heic",
        "size": 905818,
        "width": 4032,
        "height": 3024
      },
      {
        "id": "icpl://ASDPdJ/LvFWjsBy4YOOp7B5c+XOi",
        "data_type": "video",
        "extension": "mov",
        "size": 2456163,
        "width": 980,
        "height": 1308
      },
      {
        "id": "icpl://ASAwWOvwrvAUuO71uXcU6mm+nMU4",
        "data_type": "image",
        "extension": "jpg",
        "size": 595624,
        "width": 1536,
        "height": 2048
      },
      {
        "id": "icpl://ATy/qmemCas1jzYWuhR4mQywhpzz",
        "data_type": "image",
        "extension": "jpg",
        "size": 65407,
        "width": 360,
        "height": 480
      }
    ],
    "date_created": "2020-09-18T12:32:17Z",
    "date_uploaded": "2020-09-18T12:41:19Z",
    "local_date_created": "2020-09-18T13:32:17+01:00"
  }
]

MobileMe-Kontakte

Kontakte

Ruft in iCloud gespeicherte iOS-Kontaktdaten ab.

Datentyp-ID mme_contacts.contacts
Zugehörige Einstellung Settings > [username] > iCloud > Contacts

Datenattribute

Der mme_contacts.contact Datentyp erbt die meisten Attribute von dem contact In der folgenden Tabelle sind zusätzliche oder abweichende Attribute aufgeführt.

Name Art Beschreibung
id Zeichenfolge Eine Kennung für das Datenelement. Nützlich zum Deduplizieren von Daten über mehrere Umfragen hinweg.
data_type Zeichenfolge, immer mme_contacts.contact Der Datentyp des Elements.
uid Zeichenfolge Eine eindeutige Kennung, mit der Sie über verschiedene Quellen von iOS-Kontaktdaten hinweg deduplizieren können.
image verschachteltes image , optional Profilbild für den Kontakt.

Beispieldaten

[
  {
    "id": "2cf6a837304d6614",
    "data_type": "mme_contacts.contact",
    "uid": "NzNlNjkxYjctOTBmYi00MTYxLWI5YzYtZTk0ZDlhZjljMmE5",
    "first_name": "John",
    "middle_name": "'Gala'",
    "last_name": "Appleseed",
    "prefix": "Mr.",
    "suffix": "Jr.",
    "nickname": "John'o",
    "records": [
      {
        "type": "Phone",
        "name": "MAIN",
        "value": "1-800-MY-APPLE"
      },
      {
        "type": "Phone",
        "name": "UK",
        "value": "0800 039 1010"
      },
      {
        "type": "URL",
        "name": "HOMEPAGE",
        "value": "http://www.apple.com"
      },
      {
        "type": "URL",
        "name": "HOMEPAGE",
        "value": "http://www.apple.com/uk/"
      },
      {
        "City": "Cupertino",
        "State": "CA",
        "ZIP": "95014",
        "name": "WORK",
        "CountryCode": "US",
        "Country": "United States",
        "Street": "1 Infinite Loop",
        "type": "Address",
        "SubLocality": null,
        "Municipality": null
      }
    ],
    "organisation": "Apple Inc.",
    "department": "Marketing",
    "jobtitle": "VP Coring",
    "birthday": "1976-04-01",
    "image": {
      "id": "mme_contact_image://2cf6a837304d6614",
      "data_type": "image",
      "extension": "jpg"
    }
  }
]

MobileMe-Kalenderereignisse mme_calendar.events

Ruft in iCloud gespeicherte iOS-Kalenderdaten ab.

MobileMe Notes Notizen mme_notes.notes

Ruft in iCloud gespeicherte iOS Notes-Daten ab.

CallKit

Anrufe von CallKit callkit.calls

Ruft mit dem CallKit-Dienst synchronisierte Anrufprotokolle ab.

Fehler

callkit-uninitialised

Zeigt an, dass der CallKit-Dienst nicht für dieses Konto eingerichtet wurde. Der iCloud-Kontoinhaber kann diesen Fehler mithilfe eines iOS-Geräts beheben, das dem iCloud-Konto zugeordnet ist. Führen Sie dazu die folgenden Schritte aus: - Stellen Sie sicher, dass das Gerät mit Wi-Fi verbunden ist. - Navigieren Sie zu Settings > [username] > iCloud . - Schalten Sie iCloud Drive aus und warten Sie 30 bis 60 Sekunden, bis die Änderung wirksam wird. - Schalten Sie iCloud Drive ein, sobald die vorherige Änderung abgeschlossen ist. Dies sollte die Initialisierung auslösen.

Wenn der Fehler nach dem Ausführen dieses Vorgangs weiterhin besteht, wenden Sie sich an den Support.

callkit-sync-disabled

In diesem Fall wurde der CallKit-Dienst initialisiert, aber die Voraussetzungen, unter denen Geräte die Synchronisierung des Anrufprotokolls mit der iCloud starten können, wurden nicht erfüllt. Die API löst dies remote über die iCloud auf, aber das mit dem iCloud-Konto verknüpfte Gerät kann den Synchronisierungsstatus möglicherweise nicht neu bewerten, da dieser zwischengespeichert wird.

Der iCloud-Kontoinhaber kann ein Gerät auslösen, um die Synchronisierungsbedingungen für das Anrufprotokoll anhand der folgenden Schritte erneut zu überprüfen:

  • Navigieren Sie zu Settings > [username] > iCloud .
  • Schalten Sie iCloud Drive aus und warten Sie 30 bis 60 Sekunden, bis die Änderung wirksam wird.
  • Schalten Sie iCloud Drive ein, sobald die vorherige Änderung abgeschlossen ist. Dies sollte die Initialisierung auslösen.

Fehlerbehebung

  • Der Verlauf der letzten Anrufe wird in den Umfrageergebnissen nicht zurückgegeben.

Dies wird normalerweise dadurch verursacht, dass das Gerät seine letzten Anruflisteneinträge nicht mit der iCloud synchronisiert hat. Der CallKit-Dienst ist ein interner iOS-Dienst und kann in den Einstellungen nicht aktiviert oder deaktiviert oder manuell synchronisiert werden. Dies kann das Debuggen fehlender Daten erschweren, da unklar ist, welches Gerät mit der iCloud synchronisiert wurde oder nicht.

Dieses Problem tritt häufiger bei Konten auf, bei denen nicht viele Daten synchronisiert werden müssen (weniger als ~ 3 Anrufe), was beim Testen von Konten häufig der Fall ist.

Empfehlungen:

  • Vergewissern Sie sich, dass auf dem Gerät mehr als eine Handvoll Anruflistenaufzeichnungen synchronisiert werden müssen. Unsere Tests haben gezeigt, dass ein Gerät mit nur wenigen Anruflisteneinträgen den iCloud-Synchronisierungsprozess nicht auslöst.
  • Warten Sie, bis das Gerät eine regelmäßige Synchronisierung durchgeführt hat. Dies kann bis zu 12 Stunden dauern, je nachdem, wie das Gerät verwendet wird, in welchem Konnektivitäts- und Ladezustand es sich befindet.
  • Stecken Sie das Gerät in die Steckdose. In diesem Zustand löst das Gerät eher eine Synchronisierung aus.

  • Das alte Anrufprotokoll wird in den Umfrageergebnissen nicht zurückgegeben.

Der CallKit-Dienst dient zum Synchronisieren von Anruflisteneinträgen zwischen Geräten und nicht zum unbegrenzten Speichern dieser Einträge. In der Regel können Anrufverlaufsdatensätze für ca. 3 Monate aus CallKit abgerufen werden. Dies kann jedoch je nach internen Bereinigungsprozessen in der iCloud zwischen den Konten variieren.

CloudKit

Browserverlauf aus iCloud cloudkit_safari.history

Rufen Sie im iCloud-Synchronisierungsdienst gespeicherte Safari-Browserverlaufsdaten ab.

Finde mein und finde mein iPhone

Gerätestandorte

Rufen Sie Find My Device- und Standortdaten ab.

Beachten Sie, dass für diesen Datentyp möglicherweise mehrere Abfragen erforderlich sind, wobei die zweite ~ 10 bis 30 Sekunden nach der ersten erfolgt, um vollständige Daten zurückzugeben. Dies liegt an der Funktionsweise von Find My: Bei der ersten Abfrage wird Find My ausgelöst, um neue Daten von erreichbaren Geräten anzufordern. Die Daten sind jedoch für weitere 10 bis 30 Sekunden nicht verfügbar.

Datentyp-ID fmip.devices
Zugehörige Einstellung Settings > [username] > Find My

Datenattribute

Name Art Beschreibung
id Zeichenfolge Eine Kennung für das Datenelement. Nützlich zum Deduplizieren von Daten über mehrere Umfragen hinweg.
data_type Zeichenfolge, immer fmip.devices Der Datentyp des Elements.
name Zeichenfolge Der vom Benutzer festgelegte Name für das Gerät.
model_name Zeichenfolge Apples Marketingname für das Gerätemodell.
model_identifier Zeichenfolge Apples Kennung für das Gerätemodell.
product_type Zeichenfolge Die Produktkategorie des Geräts.
location optional verschachtelter location Der zuletzt gemeldete Speicherort für das Gerät, falls verfügbar.
battery_status Zeichenfolge Der aktuelle Batteriestatus des Geräts.
battery_level schweben Falls bekannt, bleibt die prozentuale Batterieladung erhalten.

Beispieldaten

[
  {
    "id": "e7694d7a0d2ab6cf",
    "data_type": "fmip.device",
    "name": "John's iMac",
    "model_name": "iMac with Retina 5K display",
    "model_identifier": "iMac15,1",
    "product_type": "iMac",
    "location": null,
    "battery_status": "Unknown",
    "battery_level": 0.0
  },
  {
    "id": "4d86a6181808d152",
    "data_type": "fmip.device",
    "name": "John's iPhone 11",
    "model_name": "iPhone 11",
    "model_identifier": "iPhone6,2",
    "product_type": "iPhone",
    "location": {
      "data_type": "location",
      "latitude": 51.507452392689146,
      "longitude": -0.07398372304584414,
      "altitude": 0.0,
      "horizontal_accuracy": 65.0,
      "vertical_accuracy": 0.0,
      "positioning_type": "Wifi",
      "date_created": "2020-01-01T00:00:00.000000Z"
    },
    "battery_status": "Unknown",
    "battery_level": 0.0
  }
]

Datentypen

Kennung Beschreibung
icpl Eine Datei aus der iCloud Photo Library.
mme_contact_image Ein Kontaktprofilbild von mme_contacts.contacts .

Wie können wir helfen?

Unser Support-Team hilft Ihnen gerne weiter!

Unsere Bürozeiten sind Montag bis Freitag von 9 bis 17 Uhr GMT. Die Zeit ist aktuell 4:22 nachm. GMT.

Wir bemühen uns, auf alle Mitteilungen innerhalb eines Arbeitstages zu antworten.

Unser großartiges Supportteam

© 2008 - 2024 Reincubate Ltd. Alle Rechte vorbehalten. Registriert in England und Wales #5189175, VAT GB151788978. Reincubate® und Camo® sind eingetragene Marken. Datenschutz-Bestimmungen & Begriffe.