我的苹果开发者账号即将在5天后到期。续订后,我想将设备数量恢复到100,同时我想将所有当前添加的设备导出备份以备将来使用,这些设备共有87个。
在新的苹果开发者区域,我没有看到任何导出所有设备的选项,我也不想复制粘贴所有87个设备 :(
注意: 我希望按照苹果要求的格式导出设备以便插入多个设备。
我的苹果开发者账号即将在5天后到期。续订后,我想将设备数量恢复到100,同时我想将所有当前添加的设备导出备份以备将来使用,这些设备共有87个。
在新的苹果开发者区域,我没有看到任何导出所有设备的选项,我也不想复制粘贴所有87个设备 :(
注意: 我希望按照苹果要求的格式导出设备以便插入多个设备。
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);
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中为opt-cmd-i),切换到“仪表盘”选项卡(ctrl+3),点击“开始记录”按钮并刷新页面。
在出现的列表底部找到“listDevices.action”,选择它。在网页检查器的右侧栏中复制并粘贴完整URL,并下载设备列表的JSON文件。然后,使用简单的正则表达式(例如 /\"name\": \"([^\"]+)\",\n\s*\"deviceNumber\": \"([^\"]+)\"/ )即可获取设备名称和编号。
上传时苹果所接受的格式为:
Device ID Device Name
A123456789012345678901234567890123456789 NAME1
B123456789012345678901234567890123456789 NAME2
更新:
啊!苹果现在在“iOS设备”页面上提供了完整的设备编号,这使得整个过程更加容易。将列表复制粘贴到Sublime文本中,并按正确顺序放置设备名称和编号:
查找:/^(.*) +([^\n]+)\n/
替换:\2\t\1\n
(.*\s)(\w+)$
并替换为:\2\t\1
。 - Hjalmarspaceship1 = 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
看起来自最新响应以来,网页结构已经进行了一些编辑。我的新代码片段还将输出格式化为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);
以上方法均不适用于我,可能是因为苹果公司更改了格式。但最有效的方法是:
现在,苹果已经没有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");
}
// Does not parse iPod device ids properly
// Order of platform, identifier and name is important while creating file, do not change..
// Save file extension as ".deviceids"
// Use this JS script in browser in device id's page. This script is useful when device names has space characters..
// Make sure device name does not have multi-byte characters. Apple allows UTF-8 characters only.
// Based on https://dev59.com/AmQo5IYBdhLWcg3wbfDr#58072373
var data = document.querySelectorAll(".infinite-scroll-component .row");
var header = `<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Device UDIDs</key>
<array>`;
var footer = `</array>
</dict>
</plist>`;
var deviceListString = "";
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");
deviceListString += `<dict>`
deviceListString += `<key>devicePlatform</key><string>${(data[i].childNodes[2].innerText == "iPhone" || data[i].childNodes[2].innerText == "iPad" || data[i].childNodes[2].innerText == "Apple Watch" ? "ios" : "mac")}</string>`;
deviceListString += `<key>deviceIdentifier</key><string>${data[i].childNodes[1].innerText}</string>`;
deviceListString += `<key>deviceName</key><string>${data[i].childNodes[0].innerText}</string>`;
deviceListString += `</dict>`
}
console.log(header + deviceListString + footer);
现在就可以使用,并且兼容所有设备,包括 iPhone、iPad 和 Mac:
var data = document.querySelectorAll(".infinite-scroll-component .row");
var csvOutput = "Device ID Device Name Device Platform\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;
switch(type) {
case "iPhone":
case "iPad":
type = "ios";
break;
case "Mac":
type = "mac";
break;
}
let device = [identifier, name, type].join(" ") + "\n";
csvOutput += device;
}
console.log(csvOutput);
如果导入失败,请检查您是否使用了特殊字符的设备名称。