Как изменить хром-пакетный идентификатор приложения Или Почему нам нужно ключевое поле в манифесте. Json?

Я разрабатываю упакованное приложение для хранения хрома, используя одноразовые платежи из хромовых кошельков. Для моего приложения мне нужно проверить во время выполнения, если пользователь купил приложение или не решил, должен ли он быть демонстрационной функциональностью или полной функциональностью.

В соответствии с документацией API хромовой идентификации :

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

У меня есть 2 вопроса об этой процедуре:

1) при каких условиях может измениться идентификатор моей заявки? Я попытался переустановить приложение и сделал обновления, но идентификатор приложений остается тем же. Если нет способа изменить идентификатор приложений, чем для чего нужна эта процедура?

2) как я могу загрузить мой zip-архив с помощью manifest.json (который содержит поле «ключ») на панели управления Chrome? Проблема в том, что загрузчик выдает мне ошибку:

Произошла ошибка: не удалось обработать ваш элемент.

ключевое поле недопустимо в манифесте.

После загрузки в Интернет-магазин Chrome ваш идентификатор расширения является фиксированным и больше не может быть изменен.

Идентификатор получен из файла .pem который был создан при первом .pem (или в Интернет-магазине Chrome) расширения в файле .crx . Когда вы загружаете расширение в «распакованном режиме», идентификатор автоматически генерируется непредсказуемым образом. Единственный способ управлять идентификатором расширения во время разработки – установить поле "key" в файле манифеста, как предлагает документация .

Когда вы уже опубликовали расширение в Интернет-магазине Chrome, вы можете легко получить значение этого "key" с помощью средства просмотра расширений Chrome Extension . После установки расширения перейдите на страницу сведений о веб-магазине Chrome и нажмите кнопку CRX, чтобы просмотреть источник. Когда средство просмотра расширения расширения Chrome загрузило расширение, оно отобразит ключ в консоли, который можно напрямую скопировать в ваш манифест. Json:

Скриншот: открытый ключ (вставьте в manifest.json для сохранения идентификатора расширения) crxviewer.js: 528 «ключ»: «....», crxviewer.js: 529 Вычисленный идентификатор расширения: jifpbeccnghkjeaalbbjmodiffmgedin

Если вы не опубликовали расширение или не хотите использовать Интернет-магазин Chrome, вам необходимо сначала создать закрытый ключ.

  1. Перейдите в chrome://extensions/ и включите режим разработчика.
  2. Нажмите «Расширение пакета …», выберите каталог своего приложения / расширения и подтвердите.
    Теперь у вас есть .crx-файл и файл .pem. .pem копию закрытого ключа (файл .pem )!
  3. Указанное расширение можно использовать для получения той же информации. Кроме того, посетите онлайн-демонстрацию по адресу https://robwu.nl/crxviewer/ и выберите файл crx, который вы только что создали (еще раз: просто откройте консоль, чтобы увидеть «ключ» и идентификатор расширения).

Когда вы будете готовы отправить свое приложение / расширение в Интернет-магазин Chrome, выполните следующие действия:

  1. Создайте zip-файл, содержащий расширение (важно: manifest.json должен быть у корня, то есть «directory / manifest.json» плохо, «manifest.json» – это хорошо).
    • Добавьте файл key.pem как key.pem !
      (это необходимо для сохранения идентификатора расширения)
  2. Загрузите расширение в Интернет-магазин Chrome ( без поля «key» в manifest.json , CWS отклонит любую загрузку, содержащую поле «ключ»).

Для последующих обновлений «key.pem» не следует добавлять в zip-файл, потому что Интернет-магазин Chrome больше не нуждается в нем.

Надеюсь, кто-то может дать лучший ответ, чем мне. Идентификатор приложения генерируется Google, когда вы сначала загружаете его в интернет-магазин. Тем не менее, это не тот же идентификатор, который у вас есть при разработке локально. Ваш браузер Chrome создал другой идентификатор, используя какой-либо другой механизм.

Когда вы разрабатываете локально из своего каталога исходного кода в качестве распакованного расширения, и хотите использовать идентификатор, который Chrome-магазин Chrome назначил вашему приложению, вы помещаете «ключ» в свой манифест и перезагружаете приложение. Это поможет вам, потому что многие API-интерфейсы ожидают, что chrome.runtime.id (id вашего приложения) будет таким же значением, как и приложение в магазине. Вы можете оставить «ключ» в своем манифесте, и он будет проигнорирован.

  • Как получить доступ к веб-странице DOM, а не к странице расширения DOM?
  • Проблемы с jQuery getJSON с использованием локальных файлов в Chrome
  • Отображения рабочего пространства разработчика Chrome.
  • Отключить расширения режима разработчика в Chrome
  • Удалите синюю рамку из кнопки css custom-styleled в Chrome
  • Как сделать элемент выбора прозрачным в Chrome?
  • Как связать с событием изменения localStorage с помощью jQuery для всех браузеров?
  • Chrome останавливается при выполнении нескольких запросов на один ресурс?
  • Внедрить HTML в страницу из сценария содержимого
  • Выбор текста в фокусе с использованием jQuery, не работающего в Safari и Chrome
  • Запретить API-интерфейс chrome.notifications скрывать мое уведомление через несколько секунд
  • Interesting Posts

    pinvokestackimbalance – как я могу это исправить или отключить?

    Почему Java-код с внутренним classом генерирует третий файл SomeClass $ 1.class?

    Почему ограничение использования ОЗУ в 32-разрядных операционных системах?

    Объединение / объединение PDF-файлов в Windows?

    Папка SRC в Eclipse пуста (class MainActivity не создан) после создания нового проекта андроида с использованием Eclipse

    Как выглядит запрос автозаполнения / сервера?

    Разница между fprintf, printf и sprintf?

    Как я могу совместно использовать внешний жесткий диск между Mac и ПК?

    Как я могу предотвратить сбой node.js? try-catch не работает

    Сглаживание текста Wonky при повороте с помощью webkit-transform в Chrome

    Android: View.setID (int id) программно – как избежать конфликтов идентификаторов?

    Что такое одно правило определения в C ++?

    Практичный (ближе к классическому Linux) способ использовать (автоматизировать) SUDO для CygWin

    jQuery: Как получить значение атрибута html?

    Как точно работает понимание генератора?

    Давайте будем гением компьютера.