Автоматическое обновление расширения Safari препятствует публикации расширения в галерее Safari.

Я пытаюсь загрузить расширение Safari в галерею. Каждый раз, когда я это делал, я получаю сообщение об ошибке после нескольких дней ожидания:

В ходе нашей проверки мы обнаружили, что вы все еще не включили автоматическое обновление для своего расширения.

Прохладный! Но я сделал это точно в соответствии с документами< /а>. Когда я отправлял расширение, я упомянул этот URL-адрес: http://up.thefreedictionary.com/Info.plist как мой манифест обновления. Вот содержание:

<?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>Extension Updates</key>
<array>
<dict>
<key>CFBundleIdentifier</key>
<string>dictionary</string>
<key>Developer Identifier</key>
<string>SZ9T8BXLWC</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>URL</key>
<string>
http://up.thefreedictionary.com/TheFreeDictionary.safariextz
</string>
</dict>
</array>
</dict>
</plist>

Без понятия, что тут может быть не так. И почему я не могу его опубликовать никогда без автоматических обновлений?

P.S. CFBuldleIdentifier — это «словарь». Это соответствует моему идентификатору пакета приложений. Это проблема?


person Mike Keskinov    schedule 06.11.2012    source источник


Ответы (3)


Я нашел это!

Проблема заключалась в том, что я не упомянул URL-адрес update.plist в своем info.plist (который является частью расширения). Я просто не знал, что я должен. Я упомянул этот URL-адрес в форме отправки и ожидал, что этого достаточно.

Я проверил документы, и там буквально написано «включить URL-адрес файла в поле манифеста обновления в Extension Builder». Если бы вместо этого было сказано: «добавить URL-адрес файла в ваш info.plist, который является частью вашего расширения», я бы обязательно это сделал. Но, так как я лично не разрабатывал расширение (я отдаю эту работу другому программисту в моей команде), я перепутал "Конструктор расширений" с формой отправки.

person Mike Keskinov    schedule 13.11.2012
comment
Я загрузил свое расширение в магазин сафари. Теперь, чтобы обновить мое расширение, какой процедуре я должен следовать? Нужно ли создавать какой-либо файл манифеста обновления? Что я должен указать в поле манифеста обновления в Extension Builder? - person Muthu; 08.04.2016
comment
каким должен быть ключ этого поля, где мы должны указать URL-адрес update.plist, поскольку в info.plist уже есть ключ с именем URL-адрес, где мы пишем URL-адрес extz. - person Priyanka; 20.08.2017
comment
У меня тот же вопрос с @user5821368, вы нашли имя ключа для этого поля? - person zhm; 08.10.2018

На странице документации говорится:

  • Создайте текстовый файл с расширением .plist и поместите его на веб-сервер.
  • Включите URL-адрес файла в поле «Манифест обновления» в Extension Builder.

Я предполагаю, что вы сделали второй шаг.

Что касается CFBundleIdentifier, он должен соответствовать обратному формату DNS, как описано здесь:

Строка идентификатора пакета должна быть универсальным идентификатором типа (UTI), содержащим только буквенно-цифровые (A-Z, a-z, 0-9), дефисы (-) и символы точки (.). Строка также должна быть в обратном формате DNS. Например, если домен вашей компании — Ajax.com, и вы создаете приложение с именем Hello, вы можете назначить строку com.Ajax.Hello в качестве идентификатора пакета вашего приложения.

В примерах в документации в качестве идентификатора используется com.yourCompany.safari.firstExtensionName. Однако я не думаю, что в идентификаторе должно быть слово «сафари».

person apaderno    schedule 12.11.2012

Есть несколько проблем с вашим Update.plist. Вот один из моих для справки.

<?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>Extension Updates</key>
    <array>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.canisbos.ccnotepad</string>
            <key>Developer Identifier</key>
            <string>ZANVZTSER6</string>
            <key>CFBundleVersion</key>
            <string>104</string>
            <key>CFBundleShortVersionString</key>
            <string>1.0.4</string>
            <key>URL</key>
            <string>http://dl.dropbox.com/u/23990/Canisbos/ccNotepad.safariextz</string>
        </dict>
    </array>
</dict>
</plist>

Кажется, вам не хватает объявлений XML и DOCTYPE вверху, но, что более важно, строка в паре с ключом CFBundleIdentifier неверна. Он должен быть таким же, как в вашем Info.plist, и, вероятно, это не может быть «словарь».

РЕДАКТИРОВАТЬ: я только что заметил, что вы, кажется, назвали файл Info.plist, хотя он должен быть Update.plist, хотя я не уверен, что это требуется.

person chulster    schedule 07.11.2012
comment
Если вы проверите ссылку на мой .plist (up.thefreedictionary.com/Info.plist) , вы увидите XML и DOCTYPE на месте. Я просто не скопировал его в источник в этот вопрос. Ключ CFBundleIdentifier соответствует значению в Info.plist. Если вы знаете причину, по которой это не может быть словарь, дайте мне знать. Мне очень нравится, когда это просто словарь. Кроме того, это имя пакета прошло проверку, когда я отправляю форму в галерею Safari. Имя Update.plist все равно не упоминалось в справке Apple - откуда вы его взяли? Любые другие предложения? - person Mike Keskinov; 07.11.2012
comment
Другая потенциальная проблема заключается в том, что <key>CFBundleVersion</key> <string>1</string> на самом деле должно быть 1.0.0, чтобы при увеличении до 1.0.1 автоматически обнаруживалось обновление. Мы обнаружили это трудным путем. Когда мы попробовали 2, это не сработало. Только когда мы перешли от трехзначного числа, такого как 1.2.6, к 1.2.8, это сработало. Как всегда, вы можете тщательно протестировать автоматические обновления перед запуском приложения, просто создав его с разными номерами версий и проверив страницу Safari > Preferences > Extensions > Updates. - person Stephen Siu; 24.02.2015
comment
Вот ссылка на определения полей (которые не связаны со страницей примера plist!!): developer.apple.com/library/ios/documentation/General/Reference/ - person Stephen Siu; 24.02.2015