Экспорт устройств, добавленных на портал Apple iOS Provision

Срок действия моего разработчика Apple истекает через 5 дней. И после обновления я хочу восстановить количество своих устройств до 100, но при этом я хочу экспортировать все добавленные в настоящее время устройства в качестве резервной копии для будущего использования, это 87 устройств.

В новом разделе для разработчиков Apple я не вижу возможности экспортировать все устройства, и я не хочу копировать и вставлять все 87 устройств :(

Примечание. Я хочу экспортировать устройства в формате, требуемом Apple для вставки нескольких устройств.


person Irfan DANISH    schedule 17.04.2013    source источник


Ответы (10)


Если вы ищете вариант, который не требует дополнительного программного обеспечения, записей или возни с регулярными выражениями, вот фрагмент JavaScript, который вы можете запустить в консоли JavaScript Chrome (или, я полагаю, любого другого браузера), чтобы получить правильное -отформатированный список устройств:

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 в любое время.

Это работает с текущим макетом сайта разработчиков Apple по состоянию на апрель 2015 года. Очевидно, что он может сломаться, если они что-то изменят.

person aroth    schedule 03.04.2015
comment
Это код jQuery, не думаете ли вы, что нам нужно включить библиотеку jQuery, а затем выполнить приведенный выше код. ? - person Irfan DANISH; 03.04.2015
comment
@IrfanDANISH - Нет, jQuery уже будет включен Apple, при условии, что вы запускаете этот код в консоли JavaScript на портале подготовки Apple для извлечения списка идентификаторов устройств. Я не могу придумать никакого другого контекста, в котором этот фрагмент был бы полезен. - person aroth; 03.04.2015
comment
По состоянию на сентябрь 2016 года вам необходимо переключать имена и идентификаторы в строке вывода +=. Идентификаторы в первую очередь. Тогда имя. В противном случае это не сработает. Потрясающий ответ, кстати! - person Jan; 21.09.2016

По состоянию на март 2021 года этот фрагмент, который я создал (смесь ответа 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);

person Burak Kurkcu    schedule 24.09.2019
comment
Это работает для меня без каких-либо проблем. Другие решения здесь устарели. - person Ariel Bogdziewicz; 19.12.2019

Откройте список устройств Safari, Chrome или Firefox&firebug. Откройте веб-инспектор (opt-cmd-i в сафари), перейдите на вкладку инструментов (ctrl+3). Нажмите кнопку «Начать запись» и обновите страницу.

В самом низу появившегося списка найдите «listDevices.action» и выберите его. В правом столбце веб-инспектора скопируйте и вставьте полный URL-адрес и загрузите файл JSON со списком устройств. Затем с помощью простого регулярного выражения (например, /\"name\": \"([^\"]+)\",\n\s*\"deviceNumber\": \"([^\"]+)\ "/ ) вы можете получить имя и номер устройства.

Формат, который Apple принимает для загрузки:

Device ID   Device Name
A123456789012345678901234567890123456789    NAME1
B123456789012345678901234567890123456789    NAME2

Обновление:
А! Apple теперь предоставляет полный номер устройства на странице «Устройства iOS», что упрощает весь процесс. Скопируйте и вставьте список, например, в Sublime text и поместите имя и номер устройства в правильном порядке:

найти: /^(.*) +([^\n]+)\n/
заменить: \2\t\1\n

person kovpas    schedule 17.04.2013
comment
Спасибо, ваше решение хорошее и работает. Разве вы не думаете, что Apple должна предоставить разработчикам простую функцию экспорта :) - person Irfan DANISH; 17.04.2013
comment
Пожалуйста :). Повторите ваш вопрос. Честно говоря, я не вижу в этой функции особой необходимости — она может понадобиться только в случае переноса аккаунта, что не является обычным случаем. - person kovpas; 17.04.2013
comment
Это регулярное выражение не сделало этого для меня. Наконец придумал (.*\s)(\w+)$ и заменил: \2\t\1 - person Hjalmar; 10.11.2014

Вы можете использовать командный инструмент под названием Spaceship, он предоставляет доступ как к Центру разработчиков Apple, так и к API iTunes Connect.

Вот как я перенес все свои устройства из своей учетной записи Apple Developer во вторую.

spaceship1 = Spaceship::Launcher.new("[email protected]", "password")
spaceship2 = Spaceship::Launcher.new("[email protected]", "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

Примечание. Чтобы быстро поиграть с космическим кораблем, запустите irb в своем терминале и выполните команду «spaceship».

person gbg_sw4gger    schedule 30.08.2017

Ничто из вышеперечисленного не помогло мне, скорее всего, потому, что Apple изменила формат. Но что отлично сработало, так это следующее:

  • скопируйте/вставьте все элементы со страницы устройств Apple
  • вставить в Numbers, идентификатор устройства и имена распознаются как 2 отдельных столбца
  • перетащите порядок столбцов, чтобы устройства были первыми, а не имена
  • скопировать/вставить все строки в текстовый файл
  • загрузить в Apple, и все готово
person Demian Turner    schedule 26.09.2013

Похоже, структура веб-страницы была немного изменена с момента последнего ответа. Мой новый фрагмент также форматирует выходные данные в формате 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);

person Behdad    schedule 02.01.2020

Ознакомьтесь с инструментом интерфейса командной строки Мэтта, Купертино

Вы можете запустить ios devices:list, чтобы получить список устройств в вашей учетной записи.

Вероятно, это не точный формат для импортера Apple, но он должен помочь вам, есть также ios devices:add, который позволит вам повторно добавить свои устройства из командной строки.

person Chris Wagner    schedule 17.04.2013
comment
Отличный инструмент, но он больше не работает :( Due to an update by Apple to the Dev Center on April 7th, the current version of Cupertino does not work. For lack of a public API, Cupertino relied on screen-scraping to get its information, so a change in the structure of the site breaks the functionality of the CLI. We are working quickly to restore compatibility with the next release. Thanks for your patience. - person kovpas; 17.04.2013
comment
Я полностью пропустил это :( надеюсь, они скоро это исправят. - person Chris Wagner; 17.04.2013

Сейчас у 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");
}

person T.Nhan    schedule 11.06.2019

Я решил создать новый профиль обеспечения здесь и добавить в него все устройства. . Затем скачайте его и откройте с помощью vim (или любого другого редактора). Файл будет содержать некоторый двоичный стиль и plist (xml) со всеми вашими устройствами, которые, я думаю, можно проанализировать, но я просто c&p список устройств. Что-то вроде:

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

Удалите свой профиль обеспечения, если он вам больше не нужен.

person waggledans    schedule 31.03.2017

В моем случае я также хочу получить модель устройства (например, 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

Это скриншот: введите здесь описание изображения

person eric long    schedule 22.12.2020