アドオン

デスクトップ版と Android 版の拡張機能の違い

この翻訳は不完全です。英語から この記事を翻訳 してください。

Android 版 Firefox にはデスクトップ版 Firefox で利用できる WebExtensions APIs のサブセットが提供されます。この相違の一部は Android 環境の性質のためで、このため Firefox の実装できる機能であり、その他は Android 版 Firefox がデスクトップ版機能のすべては提供していないものです。この記事ではこうした違いを説明して、アドオン開発への影響を見ていきます。

この要約は Firefox バージョン 54 で計画される機能に基づいています。

Android 版Firefox でサポートされる WebExtension API の詳細なリストは JavaScript API のブラウザーサポート のページにあり、サポートされている manifest.json キーの詳細は manifest.json セクションページにて提供されます。

ユーザーインターフェイス

Android 版 Firefox はデスクトップ版 Firefox で見られる UI のストリームライン版を提供しており、Firefox がモバイルでも楽しくて魅力ある体験を提供するのを保証しています。違いは Android の UI が Linux, Mac OS, Windows でのデスクトップ UI と違うのに関係しています。例えば、Android はウィンドウ環境をサポートしませんし、端末には普通は、キーボードショートカットを発行できるような物理キーボードが含まれません。他の違いはモバイル端末の画面が通常は小さいことに関係しています。

UI の違いの結果、Android版Firefox の拡張機能は下記の API と manifest.json キーをサポートしていません: 

  • commands と関連する commands manifest.json キー、なぜなら Android タブレットとスマートフォンは通常‘commands'を発行する物理キーボードを持たないためです。
  • sidebarAction と関連する sidebar_action manifest.json キー、, 限られた画面のため Android 端末サイドバーの不動産、例えばブラウザー履歴は、フルブラウザータブに表示されます。可能な場合、同様にサイドバーコンテンツをタブに移動すべきです。
  • windows 、なぜならAndroid 版 Firefox にはただ1つの 'window' があり、このため追加のブラウザーウィンドウを開いたり操作したりする能力はありません。

browserActionbrowser_action manifest.json キーのサポートは開発中です。Firefox 55 ではmanifest.jsonのbrowser_actionキーの default_titledefault_popup をサポートするでしょう、その方法はAndroid 版 Firefoxメニューに項目を追加する default_title で、browserAction.onClicked() イベントがメニュー項目がタップされるのをリッスンするのに利用できるでしょう。加えて、Firefox 57 サポートでは browserAction.setTitlebrowserAction.getTitle メソッドが追加されるでしょう。

アドオン UI のエフェクト

These differences impact the way you expose your add-on in the Firefox UI. The most common option, adding a button for your add-on to the Firefox toolbar with browserAction, is not available (at least until Firefox 55). Nor can you expose your add-on through a sidebar or context menu. You will, therefore, use an address bar button (through the manifest.json page_action key and pageAction API) remembering that 既定では this button is hidden and must be shown programmatically.

The features of pageAction are also reduced in Firefox for Android. The manifest.json key page_action enables you to define the button icon and a popup. You then have use of pageAction.show() and pageAction.hide() however, once ‘shown’, note that the address bar button is visible in all tabs (unlike the desktop behavior, where the button is shown only for a specified tab.) And you can set a listener to pageAction.onClicked(). pageAction.setPopup() and pageAction.getPopup() are also available, so you can update the popup or create a popup once the add-on is running. 

Also, in both pageAction and browserAction popup content is opened in a new tab and persists until the user manually closes the tab.

You can also manipulate tabs on Firefox for Android. The tabs API enables you to perform most of the actions you can on the desktop, the main exceptions are:

  • zoom features, Firefox for Android has one zoom level only, which the user can override with a pinch gesture on the page.
  • features related to selecting and moving tabs, again as these features are not supported on Android.
  • the ability to detect a tab's language or muted status. 

There are some other UI features not supported, these are:

  • bookmarks, which means you cannot manipulate the user's bookmarks, although the user can do this themselves through the UI.
  • browsingData, which means you cannot offer users features to clear browser data such as history, downloads, passwords, and alike.
  • The chrome_url_overrides and chrome_settings_overrides manifest.json keys, which means you cannot add custom home and new tab pages.
  • contextMenus, which means you cannot add options to context menus.
  • history, which means you cannot search or manipulate the history of browsed pages.
  • omnibox and the related omnibox manifest.json key, which means you cannot provide custom address bar suggestions.
  • sessions, which means you cannot list and restore tabs that have been closed while the browser has been running.
  • The options_ui  manifest.json key, which means you cannot provide options settings on about:addons. (And, as a consequence, runtime.openOptionsPage() is not available either.) You can, however, offer your users a page for setting add-on options using a bundled wep page displayed using tabs, you just have to add a button or other mechanism in your add-on to access the page.
  • At the time of writing the options_ui key was being implemented under bug 1302504.

開発者ツール

Android 版Firefox の開発者ツールは、デスクトップの WebIDE に接続する USBWi-Fi経由の リモートデバッグにて提供されます。このため、Android 版Firefox では組み込みの開発者ツールを提供せず、拡張機能は開発ツールに展開する次の API をサポートしません:

ネイティブアプリの相互作用

 runtime.connectNative()runtime.sendNativeMessage() からのネイティブアプリケーションへの相互作用はできません。

パーミッション

Permissions to use certain WebExtension APIs must be requested in the manifest.json file. On the desktop version of Firefox users are warned when an extension requests a permission and are given the option to deny the add-on that permission. However, on Firefox for Android permissions are granted automatically and the user isn’t given the option to deny them. It is currently planned to resolve this issue in Firefox 57.

その他のメモ

  • At the time of writing there was an issue with storage.sync() and data is not synchronized with the user’s Firefox account from Firefox for Android. More details can be found in bug 1316442.

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3
最終更新者: Uemmra3,