21

我的苹果开发者将在 5 天后到期。续订后,我想将我的设备数量恢复到 100,但同时我想导出所有当前添加的设备作为备份以备将来使用,这些是 87 台设备。

在新的苹果开发者部分,我没有看到任何导出所有设备的选项,我不想复制粘贴所有 87 台设备:(

注意:我想以 Apple 要求的多设备插入格式导出设备。

4

10 回答 10

32

如果您正在寻找一个不需要额外软件、录音或摆弄正则表达式的选项,这里有一个 JavaScript 片段,您可以在 Chrome(或者我假设,任何其他浏览器的)JavaScript 控制台中运行以获得正确的-格式化的设备列表:

var ids = ["Device ID"];
var names = ["Device Name"];
$("td[aria-describedby=grid-table_name]").each(function(){
    names.push($(this).html());
});
$("td[aria-describedby=grid-table_deviceNumber]").each(function(){
    ids.push($(this).html());
});

var output = "";
for (var index = 0; index < ids.length; index++) {
    //output += names[index] + "\t" + ids[index] + "\n";    //original
    output += ids[index] + "\t" + names[index] + "\n";      //post September 2016
}
console.log(output);

完整的导出将记录到控制台,此时您可以简单地将其复制/粘贴到一个空的文本文档中,然后可以随时将其重新导入回 Apple。

截至 2015 年 4 月,这适用于 Apple 当前的开发人员站点布局。显然,如果他们更改内容,它可能会中断。

于 2015-04-03T05:32:17.673 回答
22

截至 2021 年 3 月,我创建的这个片段(上面T.Nhan的答案和 Apple 上传格式指南的混合)只需将输出保存在 .txt 文件中并上传即可开箱即用:

var data = document.querySelectorAll(".infinite-scroll-component .row");

var deviceListString = "Device ID\tDevice Name\tDevice Platform\n"
for (var i = 1; i < data.length; i++) {
  deviceListString += (data[i].childNodes[1].innerText + "\t" + data[i].childNodes[0].innerText + "\t" + (data[i].childNodes[2].innerText == "iPhone" || data[i].childNodes[2].innerText == "iPad" || data[i].childNodes[2].innerText == "Apple Watch" ? "ios" : "mac") + "\n");
}

console.log(deviceListString);

于 2019-09-24T02:41:02.947 回答
9

打开设备列表safari、chrome 或 firefox&firebug。打开网络检查器(在 safari 中选择-cmd-i),转到仪器选项卡(ctrl+3)。按“开始录制”按钮并刷新页面。

在出现的列表的最底部找到“listDevices.action”并选择它。在网络检查器的右栏中,复制并粘贴完整的 URL 并下载带有设备列表的 JSON 文件。然后,用一个简单的正则表达式(即 /\"name\": \"([^\"]+)\",\n\s*\"deviceNumber\": \"([^\"]+)\ "/ ) 您可以获得设备的名称和编号。

Apple 接受的上传格式为

Device ID   Device Name
A123456789012345678901234567890123456789    NAME1
B123456789012345678901234567890123456789    NAME2

更新:
啊!Apple 现在在“iOS 设备”页面上提供了完整的 deviceNumber,因此它使整个过程更容易。例如,将列表复制粘贴到 Sublime 文本中,并按正确顺序放置设备的名称和编号:

查找:/^(.*) +([^\n]+)\n/
替换:\2\t\1\n

于 2013-04-17T06:44:16.553 回答
6

您可以使用名为 Spaceship 的命令工具,它公开了 Apple Developer Center 和 iTunes Connect API

以下是我将所有设备从我的 Apple Developer 帐户迁移到第二个帐户的方法。

spaceship1 = Spaceship::Launcher.new("account1@email.com", "password")
spaceship2 = Spaceship::Launcher.new("account2@email.com", "password")

#Get all devices from the Apple Developer account 1.
devices = spaceship1.device.all

#Loop through all devices from account 1 and then add/create them in account2.
devices.each do |device| spaceship2.device.create!(name: device.name, udid: device.udid) end

注意:要在终端中快速使用 spaceship launch irb 并执行 require “spaceship”。

于 2017-08-30T16:04:38.497 回答
5

以上都不适合我,很可能是因为苹果改变了格式。但完美的工作如下:

  • 从 Apple 设备页面复制/粘贴所有项目
  • 粘贴到数字中,设备 ID 和名称被识别为 2 个不同的列
  • 拖动列顺序,使设备优先而不是名称
  • 将所有行复制/粘贴到文本文件中
  • 上传到 Apple 就完成了
于 2013-09-26T14:57:18.903 回答
2

现在,Apple 不再拥有 JQuery。我们可以使用这个查询来获取

var data = document.querySelectorAll(".infinite-scroll-component .row");
for(var i = 0 ; i < dencho.length; i++){
  var name =  data[i].childNodes[0];
  var id =  data[i].childNodes[1]
  console.log(name.innerText + "\t" +  id.innerText  + "\n");
}

于 2019-06-11T07:18:47.587 回答
2

自最新回复以来,网页结构似乎已进行了一些编辑。我的新片段还将输出格式化为 CSV,因此您可以保存输出并使用 Numbers/Excel 打开并共享它。

var data = document.querySelectorAll(".infinite-scroll-component .row");
var csvOutput = "Name, Identifier, Type\n"

for (var i = 1; i < data.length; i++) {
    let name = data[i].childNodes[0].childNodes[0].textContent;
    let identifier = data[i].childNodes[1].childNodes[0].textContent;
    let type = data[i].childNodes[2].childNodes[0].textContent;
    let device = [name, identifier, type].join(", ") + "\n";
    csvOutput += device;
}

console.log(csvOutput);

于 2020-01-02T11:23:39.053 回答
1

查看Mattt 的命令行界面工具Cupertino

您可以运行ios devices:list以获取您帐户中的设备列表。

它可能不是 Apple 导入器的确切格式,但它应该让你明白,还有ios devices:add可以让你从命令行重新添加你的设备。

于 2013-04-17T06:38:55.803 回答
0

就我而言,我还想获取设备型号(例如,iPhone X、iPhone 8 ....)您可以使用对象获取基于 UDID 的任何设备信息var object = JSON.parse(this.responseText);

var data = document.querySelectorAll(".infinite-scroll-component .row");
var deviceListString = ""
var databody = JSON.stringify({
  teamId: 'XXXXXXXX' // your team id here
})

for (var i = 1; i < data.length; i++) {
    var xhr = new XMLHttpRequest()
    xhr.withCredentials = true
    xhr.addEventListener('readystatechange', function() {
        if (this.readyState === this.DONE) {
            var object = JSON.parse(this.responseText);
            deviceListString += object.data.attributes.name + "\t" + object.data.attributes.model + "\t" +object.data.attributes.udid + "\n";
        }
    })

    var rowID = data[i].getAttribute('data-id');
    var url = `https://developer.apple.com/services-account/v1/devices/${rowID}?fields[devices]=name,udid,platform,model,status,devicePlatformLabel`
    xhr.open('POST', url);
    xhr.setRequestHeader('content-type', 'application/vnd.api+json');
    xhr.setRequestHeader('x-http-method-override', 'GET');
    xhr.send(databody);
}

当您输入回车时,结果存储在 deviceListString 所以只需获取该值

deviceListString

这是截图: 在此处输入图像描述

于 2020-12-22T08:29:28.350 回答
0

我对此的解决方案是在此处创建新的配置文件 并将所有设备添加到其中。然后下载它并用 vim(或任何其他编辑器)打开。该文件将包含所有设备的一些二进制样式和 plist (xml),我猜可以解析,但我只是 c&p 设备列表。喜欢:

<key>ProvisionedDevices</key>
   <array>
       <string>device1 udid</string>
       ....
       <string>deviceN udid</string>
   </array>

如果您之后不需要它,请删除您的配置文件。

于 2017-03-31T20:32:38.887 回答