【问题标题】:CloudKit REST APICloudKit REST API
【发布时间】:2021-04-16 22:00:12
【问题描述】:

我正在尝试使用 CloudKit API 在我的服务器上的公共数据库中创建记录,使用服务器到服务器的密钥。我正在使用以下 shell 脚本来生成 curl 命令。当我运行它时,Apple 的响应只是说存在内部错误。

{ “uuid”:“a6415feb-168b-4615-9577-10c5168d7d7c”, “serverErrorCode”:“INTERNAL_ERROR” }

这是我正在使用的脚本:

#!/bin/sh

subpath=/database/1/iCloud.com.mycompany.myapp/development/public/records/modify
date=`date -u +"%Y-%m-%dT%H:%M:%SZ"`

body='
{
  "operations": [
    {
      "operationType": "forceReplace",
      "record": {
        "recordType": "Drawing",
        "fields": {
          "date": "2021-01-09T12:00:00Z",
          "numbers": [14, 26, 38, 45, 46, 13],
          "type": 1
        }
      },
      "recordName": "powerball20210109"
    }
  ],
  "atomic": true
}
'

encoded=`echo $body | base64`
signature="$date:$encoded:$subpath"


curl -X POST https://api.apple-cloudkit.com$subpath \
        -H 'Content-Type: application/json' \
        -H 'X-Apple-Cloudkit-Request-KeyID: myKeyHere' \
        -H "X-Apple-CloudKit-Request-ISO8601Date: $date" \
        -H "X-Apple-CloudKit-Request-SignatureV1: $signature" \
        -d "$body"

CloudKit 架构将绘图显示为具有三个属性的自定义类型:

  • 日期是日期/时间
  • numbers 是一个 Int(64)(列表)
  • 类型是 Int(64)

【问题讨论】:

    标签: cloudkit cloudkit-web-services


    【解决方案1】:

    我可以看到几个问题。所有字段都需要有一个具有value 属性的对象。此外,自 1970 年 1 月 1 日以来,日期以毫秒格式以整数形式保存到 CloudKit。

    我从未尝试过保存这样的整数数组,但看起来不错。

    试试这个:

    "fields":{
      "date": { "value" : 1610193600000 },
      "numbers": { "value" : [14, 26, 38, 45, 46, 13] },
      "type": { "value" : 1 }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 2017-09-12
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多