我的苹果开发者将在 5 天后到期。续订后,我想将我的设备数量恢复到 100,但同时我想导出所有当前添加的设备作为备份以备将来使用,这些是 87 台设备。
在新的苹果开发者部分,我没有看到任何导出所有设备的选项,我不想复制粘贴所有 87 台设备:(
注意:我想以 Apple 要求的多设备插入格式导出设备。
我的苹果开发者将在 5 天后到期。续订后,我想将我的设备数量恢复到 100,但同时我想导出所有当前添加的设备作为备份以备将来使用,这些是 87 台设备。
在新的苹果开发者部分,我没有看到任何导出所有设备的选项,我不想复制粘贴所有 87 台设备:(
注意:我想以 Apple 要求的多设备插入格式导出设备。
如果您正在寻找一个不需要额外软件、录音或摆弄正则表达式的选项,这里有一个 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 当前的开发人员站点布局。显然,如果他们更改内容,它可能会中断。
截至 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);
打开设备列表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
您可以使用名为 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”。
以上都不适合我,很可能是因为苹果改变了格式。但完美的工作如下:
现在,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");
}
自最新回复以来,网页结构似乎已进行了一些编辑。我的新片段还将输出格式化为 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);
就我而言,我还想获取设备型号(例如,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
我对此的解决方案是在此处创建新的配置文件 并将所有设备添加到其中。然后下载它并用 vim(或任何其他编辑器)打开。该文件将包含所有设备的一些二进制样式和 plist (xml),我猜可以解析,但我只是 c&p 设备列表。喜欢:
<key>ProvisionedDevices</key>
<array>
<string>device1 udid</string>
....
<string>deviceN udid</string>
</array>
如果您之后不需要它,请删除您的配置文件。