O objeto App representa a aplicação de nível superior. Esse construtor cria uma instância de App, que corresponde ao próprio miniapp. O objeto App gerencia todas as páginas e os dados globais, além de fornecer métodos de ciclo de vida.
Introdução
O diretório raiz de cada miniapp geralmente inclui três arquivos:
app.acss: Estilos da aplicação (opcional)app.js: Lógica da aplicaçãoapp.json: Configuração da aplicação
Veja abaixo um exemplo simples de arquivo app.json:
{
"pages": [
"pages/index/index",
"pages/logs/index"
],
"window": {
"defaultTitle": "Demo"
}
}
Essa configuração especifica que o miniapp contém duas páginas e define o título padrão da janela da aplicação como Demo.
O objeto App fornece quatro eventos para definição de métodos de gancho:
onLaunch: Inicialização do miniapp.onShow: Miniapp trazido para o primeiro plano.onHide: Miniapp enviado para o segundo plano.onError: Ocorrência de erro no miniapp.
Confira a seguir um exemplo simples de arquivo app.js:
App({
onLaunch(options) {
// Miniapp initialization
},
onShow(options) {
// Miniapp is displayed
},
onHide() {
// Miniapp is hidden
},
onError(msg) {
console.log(msg)
},
globalData: {
foo: true,
}
})
App()
A função App() aceita um parâmetro do tipo object para configurar o ciclo de vida do miniapp e outras definições.
Descrição dos parâmetros:
|
Propriedade |
Tipo |
Descrição |
Condição de acionamento |
|
onLaunch |
Function |
Monitora a inicialização do miniapp. |
Acionado quando a inicialização do miniapp é concluída. Este evento ocorre apenas uma vez globalmente. |
|
onShow |
Function |
Monitora a exibição do miniapp. |
Acionado quando o miniapp inicia ou retorna do segundo plano para o primeiro plano. |
|
onHide |
Function |
Monitora a ocultação do miniapp. |
Acionado quando o miniapp passa do primeiro plano para o segundo plano. |
|
onError |
Function |
Monitora erros do miniapp. |
Acionado quando ocorre um erro JavaScript no miniapp. |
Definição de primeiro e segundo plano: Quando o usuário toca no botão de fechar no canto superior esquerdo ou pressiona o botão Home do dispositivo para sair do cliente mPaaS, o miniapp não é destruído imediatamente; ele entra em segundo plano. Ao reabrir o cliente mPaaS ou acessar o miniapp novamente, a aplicação volta ao primeiro plano.
O miniapp só é destruído após permanecer em segundo plano por um determinado período ou caso consuma recursos excessivos do sistema.
Parâmetros dos métodos onLaunch/onShow
|
Propriedade |
Tipo |
Descrição |
|
query |
Object |
A consulta ( |
|
path |
String |
O caminho da página do miniapp atual. |
Para passar parâmetros na inicialização via código nativo:

-
Para passar parâmetros na inicialização via URL, o campo
queryé extraído do parâmetroqueryde inicialização, enquanto o campopathvem do parâmetropage. Por exemplo, considere a seguinte URL:alipays://platformapi/startapp?appId=1999&query=number%3D1&page=x%2Fy%2Fz-
O parâmetro
queryé interpretado da seguinte forma:number%3D1 === encodeURIComponent('number=1') -
O parâmetro
pathé interpretado da seguinte forma:x%2Fy%2Fz === encodeURIComponent('x/y/z')
-
Na primeira vez que o usuário iniciar o miniapp, obtenha esse parâmetro pelo método onLaunch. Se o miniapp estiver em segundo plano e for reaberto por meio de um esquema, utilize o método onShow para obter o parâmetro.
App({
onLaunch(options) {
// First time opening
// options.query == {number:1}
},
onShow(options) {
// Reopened from the background by a scheme
// options.query == {number:1}
},
})
getApp()
A função global getApp() recupera a instância do miniapp. Geralmente, subpáginas utilizam essa função para acessar a instância da aplicação de nível superior.
var app = getApp()
console.log(app.globalData) // Get globalData
Observações:
Chame
App()apenas emapp.jse faça isso somente uma vez.Não chame
getApp()dentro de funções definidas emApp(). Utilizethispara acessar a instânciaapp.Não invoque
<a href="https://docs.alipay.com/mini/framework/page#getcurrentpages">getCurrentPages()</a>emonLaunch, pois apageainda não foi gerada nesse momento.Após recuperar uma instância com
getApp(), não chame funções de ciclo de vida diretamente.
É possível definir dados globais em App(). As subpáginas obtêm a instância global da aplicação por meio da função getApp(). Exemplo:
// app.js
App({
globalData: 1
})
// a.js
// localValue is valid only in a.js
var localValue = 'a'
// Create an app instance
var app = getApp()
// Get the global data and change it
app.globalData++
// b.js
// localValue is valid only in b.js
var localValue = 'b'
// If a.js runs first, globalData returns 2
console.log(getApp().globalData)
No código acima, tanto a.js quanto b.js declaram a variável localValue. Essas variáveis são independentes, pois declarações de variáveis e funções em um script têm validade restrita ao próprio arquivo.
app.json
O arquivo app.json configura globalmente a aplicação. Ele define os caminhos dos arquivos de página, a aparência da janela, tempos limite de rede, configurações de abas múltiplas, entre outros aspectos.
Veja abaixo um exemplo simples de arquivo app.json com algumas opções de configuração.
{
"pages": [
"pages/index/index",
"pages/logs/index"
],
"window": {
"defaultTitle": "Demo"
}
}
Os itens de configuração do app.json são descritos a seguir.
|
Arquivo |
Tipo |
Obrigatório |
Descrição |
|
pages |
Array de Strings |
Sim |
Define os caminhos das páginas. |
|
window |
Object |
Não |
Configura a aparência da janela para as páginas padrão. |
|
tabBar |
Object |
Não |
Define a aparência da barra de abas inferior. |
pages
A propriedade pages é um array de strings que especifica as páginas do miniapp. Cada item representa o caminho de uma página, sendo que o primeiro item define a página inicial. Para adicionar ou remover páginas, modifique o array pages.
Não é necessário adicionar o sufixo .js ao caminho da página. O framework carrega automaticamente os arquivos .json, .js, .axml e .acss correspondentes.
Por exemplo, se a pasta de desenvolvimento tiver a seguinte estrutura:
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
O arquivo app.json deve ser escrito da seguinte maneira:
{
"pages":[
"pages/index/index",
"pages/logs/logs"
]
}
Observação: Se page for omitido, a página inicial será usada por padrão.
window
A propriedade window configura a barra de status, a barra de navegação, o título e a cor de fundo da janela do miniapp.
As subpropriedades incluem titleBarColor, defaultTitle, pullRefresh e allowsBounceVertical.
|
Arquivo |
Tipo |
Obrigatório |
Descrição |
|
titleBarColor |
Decimal |
Não |
Cor de fundo da barra de navegação. |
|
defaultTitle |
String |
Não |
Título da página. |
|
pullRefresh |
Boolean |
Não |
Indica se permite atualizar puxando a tela. Padrão: |
|
allowsBounceVertical |
String(YES/NO) |
Não |
Indica se a página permite rolagem vertical além do conteúdo. Padrão: |
Exemplo:
{
"window":{
"defaultTitle": "Alipay API Feature Demo"
}
}
tabBar
Se o seu miniapp for uma aplicação com múltiplas abas, onde o usuário alterna entre páginas pela barra inferior da janela do cliente, utilize o item de configuração tabBar para definir a aparência da barra e a página correspondente a cada aba selecionada.
Nota:
Páginas acessadas por navegação (
my.navigateTo) ou redirecionamento (my.redirectTo) não exibem a barra de abas inferior, mesmo que estejam definidas na configuração databBar.A primeira página listada em
tabBardeve ser obrigatoriamente a página inicial.
Configuração da tabBar
|
Arquivo |
Tipo |
Obrigatório |
Descrição |
|
textColor |
HexColor |
Não |
Cor do texto. |
|
selectedColor |
HexColor |
Não |
Cor do texto selecionado. |
|
backgroundColor |
HexColor |
Não |
Cor de fundo. |
|
items |
Array |
Sim |
Configuração de cada aba. |
Configuração do item
|
arquivo |
Tipo |
Obrigatório |
Descrição |
|
pagePath |
String |
Sim |
Define o caminho da página. |
|
name |
String |
Sim |
Nome da aba. |
|
icon |
String |
Não |
Caminho do ícone normal. |
|
activeIcon |
String |
Não |
Caminho do ícone destacado. |
O tamanho recomendado para um icon é 60 × 60 px. O sistema estica ou escala qualquer imagem fornecida de forma não proporcional para ajustar-se a esse tamanho.
Exemplo:
{
"tabBar": {
"textColor": "#dddddd",
"selectedColor": "#49a9ee",
"backgroundColor": "#ffffff",
"items": [
{
"pagePath": "pages/index/index",
"name": "Home"
},
{
"pagePath": "pages/logs/logs",
"name": "Logs"
}
]
}
}
Parâmetros de inicialização
Ao abrir um miniapp a partir de código nativo, inclua os parâmetros page e query. Use o parâmetro page para especificar o caminho de uma página específica e o parâmetro query para transmitir outros dados.
-
Exemplo de código iOS
NSDictionary *param = @{@"page":@"pages/card/index", @"query":@"own=1&sign=1&code=2452473"}; MPNebulaAdapterInterface startTinyAppWithId:@"1234567891234568" params:param]; -
Exemplo de código Android
Bundle param = new Bundle(); param.putString("page", "pages/card/index"); param.putString("query", "own=1&sign=1&code=2452473"); MPNebula.startApp("1234567891234568",param);