すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:App

最終更新日:Jan 27, 2026

App オブジェクトは、トップレベルのアプリケーションを表します。これは、ミニアプリ自体である App インスタンスを作成するコンストラクターです。App オブジェクトは、すべてのページとグローバルデータを管理し、ライフサイクルメソッドを提供します。

概要

各ミニアプリのルートディレクトリには、通常、次の 3 つのファイルが含まれます。

  • app.acss:アプリケーションスタイル (オプション)

  • app.js:アプリケーションロジック

  • app.json:アプリケーション構成

以下は、シンプルな app.json ファイルの例です。

{
  "pages": [
    "pages/index/index",
    "pages/logs/index"
  ],
  "window": {
    "defaultTitle": "Demo"
  }
}

この構成では、ミニアプリに 2 つのページが含まれ、アプリケーションウィンドウのデフォルトタイトルが Demo であることを指定します。

App オブジェクトは、フックメソッドを定義できる 4 つのイベントを提供します。

  • onLaunch:ミニアプリが起動します。

  • onShow:ミニアプリが前景に切り替わります。

  • onHide:ミニアプリがバックグラウンドに切り替わります。

  • onError:ミニアプリでエラーが発生します。

以下は、シンプルな app.js ファイルの例です。

App({
  onLaunch(options) {
    // ミニアプリの初期化
  },
  onShow(options) {
    // ミニアプリが表示されます
  },
  onHide() {
    // ミニアプリが非表示になります
  },
  onError(msg) {
    console.log(msg)
  },
  globalData: {
    foo: true,
  }
})

App()

App() 関数は、ミニアプリのライフサイクルやその他の設定を構成するために使用できる object パラメーターを受け入れます。

パラメーターの説明:

プロパティ

タイプ

説明

トリガー条件

onLaunch

関数

ミニアプリの初期化を監視します。

ミニアプリの初期化が完了したときにトリガーされます。これはグローバルで一度だけトリガーされます。

onShow

関数

ミニアプリが表示されるタイミングを監視します。

ミニアプリが起動したとき、またはバックグラウンドから前景に切り替わったときにトリガーされます。

onHide

関数

ミニアプリが非表示になるタイミングを監視します。

ミニアプリが前景からバックグラウンドに切り替わったときにトリガーされます。

onError

関数

ミニアプリのエラーを監視します。

ミニアプリで JavaScript エラーが発生したときにトリガーされます。

前景とバックグラウンドの定義:ユーザーが左上隅の閉じるボタンをタップするか、デバイスのホームボタンを押して mPaaS クライアントを離れると、ミニアプリはすぐには破棄されません。代わりに、バックグラウンドに入ります。ユーザーが mPaaS クライアントに再入場するか、ミニアプリを再度開くと、前景に戻ります。

ミニアプリは、一定期間バックグラウンドにあった後、またはシステムリソースを過剰に消費した場合にのみ破棄されます。

onLaunch/onShow メソッドのパラメーター

プロパティ

タイプ

説明

query

オブジェクト

現在のミニアプリのクエリ。

path

文字列

現在のミニアプリのページパス。

  • ネイティブコードから起動時にパラメーターを渡すには: 小启动启动传参

  • URL から起動時にパラメーターを渡すには、query は起動パラメーターの query フィールドから解析され、pathpage フィールドから解析されます。たとえば、次の URL の場合:

    alipays://platformapi/startapp?appId=1999&query=number%3D1&page=x%2Fy%2Fz
    • query パラメーターは次のように解析されます。

      number%3D1 === encodeURIComponent('number=1')
    • path パラメーターは次のように解析されます。

      x%2Fy%2Fz === encodeURIComponent('x/y/z')

ユーザーが初めてミニアプリを起動するとき、このパラメーターは onLaunch メソッドから取得できます。ミニアプリがバックグラウンドにあり、スキームを使用して再度開かれた場合、パラメーターは onShow メソッドから取得できます。

App({
  onLaunch(options) {
    // 初回起動時
    // options.query == {number:1}
  },
  onShow(options) {
    // スキームによってバックグラウンドから再度開かれた場合
    // options.query == {number:1}
  },
})

getApp()

グローバルな getApp() 関数は、ミニアプリのインスタンスを取得するために提供されます。これは通常、サブページでトップレベルのアプリケーションインスタンスを取得するために使用されます。

var app = getApp()
console.log(app.globalData) // globalData を取得

注意:

  • App()app.js 内でのみ呼び出し、一度だけ呼び出してください。

  • App() 内で定義された関数で getApp() を呼び出さないでください。app インスタンスにアクセスするには this を使用してください。

  • page がまだ生成されていないため、onLaunch<a href="https://docs.alipay.com/mini/framework/page#getcurrentpages">getCurrentPages()</a> を呼び出さないでください。

  • getApp() を使用してインスタンスを取得した後は、ライフサイクル関数を非公開で呼び出さないでください。

App() でグローバルデータを設定できます。サブページは、グローバルな getApp() 関数を介してグローバルアプリケーションインスタンスを取得できます。例:

// app.js
App({
  globalData: 1
})
// a.js

// localValue は a.js 内でのみ有効です
var localValue = 'a'

// app インスタンスを作成
var app = getApp()

// グローバルデータを取得して変更
app.globalData++
// b.js

// localValue は b.js 内でのみ有効です
var localValue = 'b'

// a.js が先に実行された場合、globalData は 2 を返します
console.log(getApp().globalData)

上記のコードでは、a.jsb.js の両方で localValue 変数が宣言されています。スクリプトで宣言された変数と関数はそのファイル内でのみ有効であるため、これらの変数は互いに影響しません。

app.json

app.json ファイルはグローバル構成に使用されます。ページファイルのパス、ウィンドウの外観、ネットワークタイムアウト設定、マルチタブ設定などを決定します。

以下は、いくつかの構成オプションを含むシンプルな app.json ファイルの例です。

{
  "pages": [
    "pages/index/index",
    "pages/logs/index"
  ],
  "window": {
    "defaultTitle": "Demo"
  }
}

app.json の設定項目は次のとおりです。

ファイル

タイプ

必須

説明

pages

文字列配列

はい

ページパスを設定します。

window

オブジェクト

いいえ

デフォルトページのウィンドウの外観を設定します。

tabBar

オブジェクト

いいえ

下部のタブバーの外観を設定します。

pages

pages プロパティは、ミニアプリのページを指定する文字列の配列です。各項目はページへのパスを表します。配列の最初の項目は、ミニアプリのホームページを指定します。ミニアプリでページを追加または削除するには、pages 配列を変更する必要があります。

ページパスに .js サフィックスを追加する必要はありません。フレームワークは、同じ名前の .json.js.axml、および .acss ファイルを自動的に読み込みます。

たとえば、開発フォルダが次のようになっている場合:

pages/
pages/index/index.axml
pages/index/index.js
pages/index/index.acss
pages/logs/logs.axml
pages/logs/logs.js
app.js
app.json
app.acss

app.json ファイルは次のように記述する必要があります。

{
  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ]
}

注意:page が省略された場合、デフォルトでホームページが使用されます。

window

window プロパティは、ミニアプリのステータスバー、ナビゲーションバー、タイトル、およびウィンドウの背景色を設定するために使用されます。

サブプロパティには、titleBarColordefaultTitlepullRefresh、および allowsBounceVertical が含まれます。

ファイル

タイプ

必須

説明

titleBarColor

10進数

いいえ

ナビゲーションバーの背景色。

defaultTitle

文字列

いいえ

ページタイトル。

pullRefresh

ブール値

いいえ

プルダウンして更新を許可するかどうかを指定します。デフォルト:false

allowsBounceVertical

文字列 (YES/NO)

いいえ

ページがコンテンツを超えて垂直方向にプルできるかどうかを指定します。デフォルト:YES

例:

{
  "window":{
    "defaultTitle": "Alipay API Feature Demo"
  }
}

tabBar

ご利用のミニアプリが、クライアントウィンドウの下部にあるタブバーを使用してページを切り替えることができるマルチタブアプリケーションである場合、tabBar 設定項目を使用して、タブバーの外観と、タブが選択されたときに表示される対応するページを指定できます。

注意

  • ページナビゲーション (my.navigateTo) またはページリダイレクト (my.redirectTo) によって到達したページでは、そのページが tabBar 構成で定義されていても、下部のタブバーは表示されません。

  • tabBar の最初のページはホームページでなければなりません。

tabBar の構成

ファイル

タイプ

必須

説明

textColor

HexColor

いいえ

テキストの色。

selectedColor

HexColor

いいえ

選択されたテキストの色。

backgroundColor

HexColor

いいえ

背景色。

items

配列

はい

各タブの構成。

Item の構成

ファイル

タイプ

必須

説明

pagePath

文字列

はい

ページパスを設定します。

name

文字列

はい

名前。

icon

文字列

いいえ

通常アイコンのパス。

activeIcon

文字列

いいえ

ハイライト表示されたアイコンのパス。

icon の推奨サイズは 60 × 60 px です。システムは、入力された画像をこのサイズに合わせて非比例的に伸縮させます。

例:

{
  "tabBar": {
    "textColor": "#dddddd",
    "selectedColor": "#49a9ee",
    "backgroundColor": "#ffffff",
    "items": [
      {
        "pagePath": "pages/index/index",
        "name": "Home"
      },
      {
        "pagePath": "pages/logs/logs",
        "name": "Logs"
      }
    ]
  }
}

起動パラメーター

ネイティブコードからミニアプリを開くときに、page および query パラメーターを含めることができます。page パラメーターを使用して特定のページへのパスを指定し、query パラメーターを使用して他のパラメーターを渡します。

  • iOS コードサンプル

    NSDictionary *param = @{@"page":@"pages/card/index", @"query":@"own=1&sign=1&code=2452473"};
    MPNebulaAdapterInterface startTinyAppWithId:@"1234567891234568" params:param];
  • Android コードサンプル

    Bundle param = new Bundle();
    param.putString("page", "pages/card/index");
    param.putString("query", "own=1&sign=1&code=2452473");
    MPNebula.startApp("1234567891234568",param);