
Japanese: 
こんにちは
Google Playソフトウェア
エンジニアのアレサンドロです
ダイナミックデリバリーと
アプリアップデート担当です
Android開発者アドボケイトの
ピエトロです
Googleパートナー
開発者アドボケイトの
サンジーフです
アプリ内アップデートについて
簡単におさらいしましょう
今年 I/Oでアプリ内
アップデートを紹介しました
Playストアでの
新しいアップデートの公開を
開発者からユーザーに
通知するためのAPIです
自動アップデートがあるPlayで
なぜ新しいAPIが必要なの？
と疑問に思うかもしれませんが
現実世界では
データ使用量を気にして
自動アップデートをオフにしている
ユーザーが多いのです

Portuguese: 
[MÚSICA]
Olá!
Eu sou Alessandro.
Sou engenheiro de software
no Google Play.
E trabalho com atualizações
dinâmicas de apps.
Oi,eu sou Pietro.
Trabalho no Google como
mediador de desenvolvedores Android.
E eu sou Amrit Sanjeev.
Sou mediador de desenvolvedores
parceiros no Google.
Vamos começar com um resumo
das atualizações no app.
No I/O deste ano,
apresentamos a API de atualizações no app
que permite que os
desenvolvedores,
informem os usuários quando uma
atualização está disponível
na Play Store.
Alguns de vocês podem
estar pensando,
por que uma nova API se temos
as atualizações automáticas no Play?
No mundo real,
muitos usuários
desativam as atualizações
automáticas porque
se preocupam com a quantidade
de dados usada.
Muitos usuários também
usam a configuração

Indonesian: 
-Halo, semuanya.
Saya Alessandro.
Saya software engineer
di Google Play.
Dan saya mengerjakan pengiriman dinamis
dan update aplikasi.
-Hai, saya Pietro.
Saya bekerja di Google sebagai
developer advocate Android.
-Dan saya Amrit Sanjeev.
Saya partner developer advocate di Google.
Mari mulai dengan
rekap singkat update dalam aplikasi.
Di I/O tahun ini, kami memperkenalkan
API update dalam aplikasi
yang mengizinkan Anda sebagai developer
untuk memberi tahu pengguna
saat update baru tersedia untuk mereka
di Play Store.
Sekarang, mungkin Anda bertanya-tanya
mengapa perlu API baru
sedangkan ada update otomatis di Play.
Pada kenyataannya, 
banyak pengguna menonaktifkan
update otomatis karena khawatir
akan menggunakan banyak bandwith.
Apalagi, banyak
pengguna yang menyetel

Korean: 
[음악 재생]
여러분 안녕하세요?
저는 알렉산드로입니다
저는 Google Play의
소프트웨어 엔지니어로
Dynamic Delivery와 
앱 업데이트를 담당하고 있습니다
안녕하세요,
저는 피에트로입니다
저는 Google의
Developer Advocate입니다
저는 아머릿 산지브입니다
Google에서 파트너 Developer
Advocate로 일하고 있습니다
먼저, 인앱 업데이트에 대한 개요를
훑어보는 것으로 시작하겠는데요
올해 I/O에서 저희는
인앱 업데이트를 소개했습니다
개발자는 API를 사용해
Play 스토어에서 업데이트가 가능할 때
이를 사용자에게 알려줄 수 있습니다
Google Play에 자동
업데이트 기능이 있는데
왜 이 새로운 API 기능이 필요한지 
의문을 갖는 분도 계실 겁니다
하지만 실제로는 아주 많은 사용자가
자동 업데이트 기능을 꺼 놓습니다
대역폭을 많이 쓰게 될까 봐
걱정하기 때문이죠
게다가 Wi-Fi에 연결되었을 때만 
이 기능을 사용하도록

Spanish: 
Hola a todos. Soy Alessandro,
ingeniero de software en Google Play,
y trabajo en Dynamic Delivery
y actualizaciones de apps.
Hola, soy Pietro
y trabajo en Google
como Developers Advocate en Android.
Y yo soy Amrit Sanjeev
y soy un Developers Advocate
de Android
Comencemos con un breve resumen
Este año, en I/O, presentamos la API
para actualizaciones integradas en la app,
que permite a los desarrolladores
informarles a los usuarios
cuándo hay nuevas actualizaciones
disponibles en Play Store.
Muchos de ustedes pensarán
"¿Para qué necesito una API nueva
si hay actualizaciones
automáticas en Play?".
En el mundo real, muchos usuarios
desactivan las actualizaciones automátcas
porque les preocupa la cantidad
de datos que usan.
Además, hay muchos usuarios
que configuran este ajuste

Chinese: 
[播放音乐]
大家好
我叫Alessandro
是一名Google Play软件工程师
主要负责Dynamic Delivery和应用更新
大家好，我叫Pietro
在Google担任
Android开发技术推广工程师
我叫Amrit Sanjeev
在Google担任
合作伙伴开发技术推广工程师
首先，我们来
快速回顾一下应用内更新
在今年的I/O大会上
我们推出了In-app Updates API
这让开发者可以
及时通知用户新的更新已经
在Play商店上线
很多人可能会想
Play中有自动更新功能，为什么还需要新API？
但在现实中，很多用户
实际上会关闭自动更新
因为他们担心这会占用很多数据带宽
而且很多用户会将此功能设置成

English: 
[MUSIC PLAYING]
ALESSANDRO DOVIS:
Hello, everyone.
I'm Alessandro.
I'm a software engineer
on Google Play.
And I'm working on dynamic
delivery and app updates.
PIETRO MAGGI: Hi, I'm Pietro.
I work at Google as
Android developer advocate.
AMRIT SANJEEV: And
I'm Amrit Sanjeev.
I'm a partner developer
advocate at Google.
So let's start with a quick
recap of in-app updates.
This year at I/O, we
introduced in-app updates
API, which allowed
you, developers,
to inform your users when a new
update is available for them
in Play Store.
Now, many of you
might be thinking,
why do you need a new API when
there is auto updates in Play.
But in the real
world, a lot of users
actually turn off auto
updates because they
are concerned about how much
data bandwidth it's using.
Moreover, there are many
users who actually set this up

English: 
in a way that it only works
when they connect it to Wi-Fi.
And they don't connect to Wi-Fi
for extended periods of time.
Which means that these users
are experiencing the older
version of the app and not
seeing all the new features,
bug fixes, and security
updates that you are actually
rolling out.
There are two ways in
which you can actually
show in-app updates.
One is an Immediate flow, where
when the user clicks to update,
the rest of the UX is completely
managed by the Play library.
This is the easiest
way to integrate.
But if you want more
control over the UX,
you also have the Flexible flow.
Here, when the user
chooses to click Update,
the control is returned
back to the app.
And the user can continue to
use the app while the update
downloads in the background.
This way, when the
download is completed,
the Play library
then informs the app
that the download is complete.

Portuguese: 
que só funciona quando estão
conectados ao Wi-Fi.
E não se conectam ao Wi-Fi
por muito tempo.
Isso significa que esses usuários
estão usando a versão antiga
do app e deixando de ver todos
os novos recursos,
correções de bugs e atualizações
de segurança que você está lançando.
Existem duas maneiras de
mostrar atualizações no app.
Uma é um fluxo imediato,
nele quando o usuário clica para atualizar
o resto da UX é completamente
gerenciada pela biblioteca do Play.
Essa é a maneira mais fácil
de integrar.
Mas se quiser mais
controle sobre a UX,
você tem o fluxo flexível.
Nele quando o usuário
clica em Atualizar,
o controle volta para o app.
E o usuário pode continuar a
usar o app durante o download
da atualização no segundo plano.
Quando o
download termina,
a biblioteca do Play
informa o app
que o download foi concluído.

Japanese: 
[Wi-Fi接続時のみ]を選んでいる
ユーザーも多くいます
しかも 彼らはWi-Fiを
あまり使いません
つまり こうしたユーザーは
古いバージョンを使い続けており
皆さんが公開した新しい機能や
バグ修正 セキュリティ更新などを
知らないままなのです
アプリ内アップデートを
表示する方法は２通りあります
１つ目は Immediate flowです
アップデートをタップすると
Playライブラリが更新を処理します
これが一番簡単な統合方法です
もっとUX全体を管理したい場合は
Flexible flowを使います
「アップデート」をクリックすると
操作はアプリへ戻ります
バックグラウンドで
アップデートがダウンロードされます
その間もユーザーはアプリを使用できます
ダウンロードが完了すると
Playライブラリがアプリに
完了を通知します

Indonesian: 
agar update otomatis hanya
bisa dilakukan saat terhubung ke Wi-Fi.
Dan mereka tidak terhubung ke Wi-Fi
untuk waktu yang lama.
Itu artinya pengguna menggunakan
aplikasi versi lama
dan tidak melihat fitur baru,
perbaikan bug, dan
update keamanan yang Anda luncurkan.
Ada dua cara agar Anda dapat
menampilkan update dalam aplikasi.
Salah satunya adalah Immediate flow,
yaitu saat pengguna mengklik update,
bagian UX lainnya sepenuhnya
dikelola library Play.
Inilah cara paling mudah
untuk berintegrasi.
Tetapi jika Anda menginginkan
kontrol lebih atas UX,
Anda juga memiliki Flexible flow.
Di sini, saat pengguna
memilih untuk mengklik Update,
kontrol dikembalikan ke aplikasi.
Dan pengguna dapat terus
menggunakan aplikasi sementara update
didownload di latar belakang.
Dengan cara ini, saat 
download selesai,
library Play akan
memberi tahu aplikasi
bahwa download selesai.

Spanish: 
para que solo funcione
cuando tienen conexión Wi-Fi
Y no están mucho tiempo conectados a Wi-Fi,
así que usan la versión anterior de la app
y no ven todas las nuevas funciones,
correcciones de errores
o actualizaciones de seguridad que lanzan.
Hay dos formas de mostrar
actualizaciones integradas en la app.
Una es el flujo inmediato:
el usuario hace clic para actualizar
y la biblioteca de Play administra
el resto de la de UX.
Este es el más fácil de integrar,
pero si quieren
tener más control sobre la UX,
pueden optar por el flujo flexible.
Con ese flujo, cuando el usuario
selecciona "Actualizar",
se devuelve el control a la app
y el usuario puede seguir usándola
mientras la actualización
se descarga en segundo plano.
De esta manera,
cuando se completa la descarga,
la biblioteca de Play le informa
a la app que ya terminó.

Korean: 
설정해 놓는 사용자가 많습니다
Wi-Fi에 오랫동안 연결하지
않을 때도 많은데 말이죠
그 결과 사용자는 구버전의
앱을 계속 사용하며
새로운 기능을 확인하지 못하고
버그가 수정된 버전,
보안이 업데이트된 버전을
사용하지 못하게 됩니다
인앱 업데이트를
사용자에게 보여주는 방법에는
두 가지가 있습니다
첫 번째는 즉시 업데이트인데요
사용자가 업데이트를 클릭하면
Play 라이브러리가
나머지 UX를 모두 처리하죠
이는 통합을 위한 가장 쉬운 방법이에요
그렇지만 UX를 더욱 잘 제어하고 싶다면
유연한 업데이트를 이용할 수 있습니다
이 방식에서는 사용자가
업데이트를 클릭하면
컨트롤이 다시 앱상으로 돌아갑니다
그러면 백그라운드에서
업데이트 다운로드가 진행되는 도중에도
사용자는 앱을 계속해서 사용할 수 있죠
이 방식에서는 다운로드가 완료되면
Play 라이브러리가 다운로드 완료 사실을
앱에 알려줍니다

Chinese: 
只有在设备接入WLAN时才开启
而他们会很长时间都不接入WLAN
这意味着这些用户会继续使用
旧版应用，而不会发现
开发者推出的
各种新功能、漏洞修复和
安全更新
实际上，有两种方法可以用于
显示应用内更新
一种是即时流程，用户一点击更新
其余用户体验就完全由Play库管理
这是最简单的集成方法
但是，如果要更好地控制用户体验
还可以选择灵活流程
用户选择点击“更新”时
控制权会返还给应用
用户可以继续使用应用
同时在后台下载更新
下载完成后
Play库会通知应用
下载已完成

Indonesian: 
Lalu, Anda menentukan
waktu yang tepat
untuk memberi tahu pengguna agar
menyelesaikan penginstalan.
Dan berbicara tentang beberapa manfaat
yang Anda dapatkan
dari perspektif developer,
Anda mengungkapkan
ukuran update di muka.
Ini adalah faktor yang orang gunakan
untuk memutuskan apakah mereka harus
segera mengupdate atau tidak.
Hal ini juga sesuai
dengan aturan distribusi Play.
Artinya, jika Anda 
hanya meluncurkannya
kepada sebagian kecil
pengguna di saluran tertentu,
hanya pengguna yang berada di saluran
dan di bucket tersebut,
sebagian kecil,
yang akan menerima update ini.
Fitur ini tadinya tidak bisa dilakukan
dengan banyak library di luar sana,
yang menggunakan sesuatu
seperti Remote Config
untuk menampilkan dialog ke pengguna.
Hal ini juga berarti bahwa karena
pengguna Anda mengupdate lebih cepat,
ada lebih sedikit versi kode Anda
yang didukung
di produksi, sehingga

Chinese: 
然后，您可以选择在适当的时间
提醒用户完成安装
这样做有几个好处
从开发者的角度来看
首先，可以事先说明更新的大小
用户通常会先考虑这个因素，再决定是否
立即更新
其次，有助于遵守所有Play分发规则
也就是说，如果您推出的更新
仅面向某个渠道的少数用户
则只有相应渠道、相应范围的
少数用户
才会收到这些更新
这种功能是已有的
很多库都无法实现的
这些库使用远程配置等功能
来向用户显示对话框
此外，由于用户会更快进行更新
您在生产环境中
需要支持的代码版本就会减少

Korean: 
개발자가 사용자에게 설치를 완료하라고
안내할 시점을 선택할 수 있는 것이죠
개발자 시각에서 이러한 점이 가지는
몇 가지 이점에 대해 말씀드리자면
먼저, 업데이트 크기를
바로 알릴 수 있다는 점입니다
이는 사용자가 업데이트를
즉시 해야 할지 결정하는 데
영향을 끼치는 요소이죠
또 다른 이점은 모든 Play 배포
규정을 준수한다는 점이에요
즉 여러분이 새로운 업데이트를
실제로 적은 수의 사용자에게만
특정 채널을 통해 출시한다면
그 채널에 있는 사용자만
다시 말해 낮은 비율의 특정 사용자만이
실제로 이 업데이트를 받을 수 있겠죠
이는 현재 나와 있는
많은 라이브러리에서는
가능하지 않았던 기능입니다
예를 들어 원격 구성과 같은 것을 사용해
사용자에게 대화를 보여주는 방식입니다
여기에서는 사용자가
업데이트를 더 빨리하기 때문에
여러분의 가용 코드 버전
즉 제작 과정에서 지원되는
이 가용 코드 버전이 줄어들어

Japanese: 
最後に開発者が決めた
適切なタイミングで
アップデートを完了するよう
ユーザーに伝えます
開発者から見たメリットのひとつは
アップデートのサイズを
事前に伝えられることです
ユーザーは この情報を基に
今アップデートするか判断できます
これはPlayの配信ルールにも
かなっています
つまり 特定チャネルの限定ユーザーに
アップデートを公開する場合でも
それが可能になるのです
これは Remote Configなどを使って
ユーザーに通知するような
従来ライブラリでは
できなかった機能です
また ユーザーがより早く
アップデートできるため
実際にリリースする
コードのバージョンを減らし

Spanish: 
Entonces, la app puede
seleccionar un momento determinado
para solicitarle al usuario
que complete la instalación.
Uno de los beneficios,
desde la perspectiva del desarrollador,
es que se comunica el tamaño
de la descarga de manera directa.
Este es un factor
que los usuarios usan para decidir
si realizarán la descarga
de inmediato o no.
También respeta
todas las reglas de distribución de Play.
Por lo tanto, solo las publicarían
para un pequeño porcentaje de sus usuarios
en un determinado canal, y solo ellos,
los que se encuentran en ese segmento,
recibirán esas actualizaciones.
Esta función no podía implementarse
con varias bibliotecas existentes,
que usaban, por ejemplo, Remote Config,
para mostrarle el diálogo al usuario.
También implica que,
como los usuarios actualizan más rápido,
se admitirán
menos versiones del código en producción

Portuguese: 
Então você escolhe o
momento certo para
dizer ao usuário
para terminar a instalação.
E para falar de
algumas vantagens
que você tem da
perspectiva do desenvolvedor,
você informa logo de cara
qual o tamanho da atualização.
Esse é um fator para as pessoas
decidirem se
atualizam imediatamente ou não.
E está de acordo com todas
as regras de distribuição do Play.
Isso significa que se você faz
esse lançamento apenas
para uma pequena parte de
usuários em um canal,
apenas aqueles que
estão nesse canal
e estão nesse grupo,
a pequena parte,
receberão essas atualizações.
Esse recurso não funciona
com muitas
bibliotecas que existem
e que usam
algo como
configuração remota
para mostrar o diálogo
ao usuário.
Significa também que,
como seus usuários atualizam rápido,
há menos
versões do seu código

English: 
Then you choose an
appropriate time
to tell the user to
complete installation.
And talking about
some of the benefits
that you have from a
developer's perspective,
you're communicating
the update size upfront.
This is a factor that people use
to decide whether they should
update immediately or not.
It also respects all the
Play distribution rules.
Which means if you're
actually rolling this out only
to a small percentage of your
users, in a certain channel,
only those users who
are in that channel
and are in that bucket,
the small percentage,
will actually receive
these updates.
This is not a feature that
was possible with many
of the libraries
out there, which
used something
like Remote Config
to show the dialog to the user.
It also means that because
your users are updating faster,
there are less
versions of your code
which are supported
in production, thereby

Indonesian: 
mengurangi biaya dukungan Anda.
Cara berintegrasi sangat mudah.
Dan dari perspektif pengguna,
ada pengurangan
yang jelas di friksi instal.
Tidak hanya itu, 
pengguna dapat mengupdate aplikasi
tanpa menutup aplikasinya sama sekali.
Dan update sebenarnya
telah terdownload di latar belakang,
sehingga alur kerja pengguna 
tidak terganggu
sementara update
sedang didownload.
Ada beberapa hal
yang cerdas dalam API ini.
Bayangkan perangkat Anda
kehabisan baterai,
atau tidak terhubung ke internet.
Di kondisi seperti ini, API 
tidak meminta pengguna untuk mengupdate
karena dalam kondisi ini
biasanya pengguna tidak mengupdate.
Sehingga kecerdasan ini
juga ada di dalam aplikasi.
Sekarang perhatikan beberapa hasil
yang telah kami lihat dengan
partner yang mengadopsi ini.
Riafy, yang merupakan sebuah
aplikasi resep dari India,
menemukan bahwa lebih dari 40% penggunanya
mengupgrade dalam 30 hari pertama
setelah mereka meluncurkan
API ini ke dalam produksi.

Portuguese: 
suportadas na produção, logo
há redução de custos de suporte.
E é muito simples
e fácil de integrar.
E da perspectiva do usuários,
existe
uma clara redução
de problemas de instalação.
Já que o usuário
pode atualizar o app
sem sair do app.
E o download é feito
no segundo plano,
sem interromper o fluxo
de trabalho do usuário
durante o download da atualização.
Essa API também é
inteligente.
Imagine que sua bateria
está acabando,
ou que não há conexão
com a Internet.
Nessas condições,
a API não oferece
a atualização ao usuário
porque
nessas condições,
é quase certo que
o usuário não vai atualizar.
Essa inteligência também
está no app.
Vamos ver rapidamente alguns
dos resultados
dos parceiros que implementaram.
Riafy,
o app de receitas da Índia,
teve mais de 40% de
upgrades nos primeiros 30 dias
depois do lançamento
dessa API na produção.

Chinese: 
从而降低支持成本
这种集成方法非常简单易用
从用户的角度来看
安装的麻烦也会明显减少
而且，用户在更新应用时
根本无需离开应用
更新会在后台下载
所以在下载更新时
用户的工作流程不会被中断
这个API还有一些智能功能
假设您的设备没电了
或者没有连接互联网
在这些情况下
这个API根本不会
提示用户进行更新
因为这时用户通常都
不会进行更新
这也就让应用有了相应的智能
现在来快速了解一下
已经采用这个API的合作伙伴获得的一些成果
Riafy是印度的一款食谱应用
他们将这个API部署到生产环境之后
前30天内便有超过40%的用户进行了升级

Spanish: 
y se reducirán los costos
de compatibilidad.
Además, es muy fácil de integrar.
Desde la perspectiva del usuario,
representa reducción, y no fricción.
No solo eso; el usuario puede actualizar
la app sin tener que salir
y, como la actualización
se descarga en segundo plano,
no se interrumpe
el flujo de trabajo del usuario.
Mientras se descarga la actualización,
se realizan procesos en esta API.
Imaginemos que el dispositivo
se está quedando sin batería
o que no está conectado a Internet.
En esas condiciones, la API
no le solicitará al usuario que actualice
porque es muy probable que no lo haga.
Por otro lado, también
se ejecutan procesos en la app.
Veremos rápidamente algunos resultados
que vieron nuestros socios
que implementaron este proceso.
Riafy, que es una app de recetas de India,
registró que más del 40% de los usuarios
actualizó en los primeros 30 días
después de implementar
la API en producción.

Japanese: 
サポートコストを削減できます
統合は本当にシンプルで簡単です
ユーザーにとっては
インストールがスムーズになります
しかも アプリを離れることなく
アップデートができます
アップデートは バックグラウンドで
ダウンロードされるので
ユーザーのワークフローを
邪魔しません
さらに別のメリットがあります
デバイスの電池残量が少ない時や
ネットに接続できない時に
このAPIは ユーザーに
アップデートを促したりしません
それは 最もアップデートしたくない
タイミングだからです
APIのメリットは以上です
では APIを採用したパートナーの
成果をご紹介しましょう
インドのレシピアプリ「Riafy」は
APIを本番環境で公開してから
わずか30日で
40％のユーザーが
アップグレードしました

English: 
reducing your support costs.
And it's really simple
and easy to integrate.
And from a user's
perspective, there
is a clear reduction
in install friction.
Not only that, the
user can update the app
without leaving the app at all.
And the update is actually
downloaded in the background,
so the user's workflow
is not interrupted
while the update is
getting downloaded
There's also some
smarts into this API.
Imagine your device is
running out of battery,
or it's not connected
to the internet.
In such conditions, this
API does not actually
prompt the user to
update because those
are conditions under
which the users are most
likely not to update.
So these smarts are
also there in the app.
Now quickly looking
at some of the results
that we have seen with
partners who've adopted this.
Riafy, which is a
recipe app from India,
has seen over 40% of their users
upgrading within the first 30
days after they've rolled
this API out into production.

Korean: 
여러분에게 드는
지원 비용을 줄일 수 있어요
또한 통합이 정말 쉽고 간단하죠
사용자 관점에서 보면
설치 시 앱 간의 충돌이
확연히 줄어듭니다
게다가 사용자는 앱을 중지하지 않고도
업데이트를 할 수 있죠
업데이트는 백그라운드에서 진행되어서
업데이트를 다운로드할 동안
사용자의 작업 흐름이
방해받을 일이 없죠
이 API에는 또 다른 이점이 있습니다
기기의 배터리 잔량이
얼마 남지 않은 경우를 가정해봅시다
아니면 인터넷에 연결되어 있지 않은
상황을 생각해보세요
이런 상황에서 API는 사용자에게
업데이트 메시지를 보내지 않습니다
이는 사용자가 가장 업데이트를 꺼리는
상황이기 때문이죠
이런 스마트한 기능이
바로 앱 안에 있는 것입니다
이제 API를 도입한 파트너들이
달성한 성과를
간략하게 살펴보죠
Riafy는 인도의
요리 레시피 앱인데요
API 도입 후
이 앱 사용자의 40% 이상이
30일 이내에 업데이트를 완료했습니다

English: 
Not only that, they've
seen a nearly 40%
reduction in the time taken
for 50% of their users
to upgrade to the new version.
The second example that I
want to call out is RedBus.
RedBus actually saw
that the time taken
for 40% of their users to
upgrade to the new version
was reduced from 10 to 3
days after they introduced
this API into their codebase.
And lastly, I want to
call out Swiggy, which is
a food delivery app from India.
They saw an increase
of 0.7 million users
updating the app after
they introduced this API.
As these numbers
suggest, the apps
clearly benefit from
users updating quickly.
And the users also
benefit because they
see the new features
and bug fixes
much earlier in the cycle.
Now I want to hand it over
to my colleague Pietro
to talk to you about testing.
Go to you.
PIETRO MAGGI: Thank you, Amrit.

Indonesian: 
Tidak hanya itu, mereka telah
melihat hampir 40%
pengurangan waktu yang dibutuhkan
oleh 50% pengguna mereka
untuk mengupgrade ke versi baru.
Contoh kedua yang saya
ingin sebutkan adalah RedBus.
RedBus menemukan bahwa
waktu yang dibutuhkan
oleh 40% pengguna mereka untuk
mengupgrade ke versi baru
berkurang dari sepuluh ke tiga
hari setelah mereka memperkenalkan
API ini ke dalam codebase mereka.
Terakhir, saya ingin
menyebutkan Swiggy,
yaitu aplikasi pengiriman makanan
dari India.
Mereka melihat peningkatan
0,7 juta pengguna
mengupdate aplikasi setelah
mereka memperkenalkan API ini.
Seperti yang ditunjukkan angka ini,
aplikasi mendapat keuntungan dari
pengguna yang mengupdate dengan cepat.
Dan pengguna juga mendapat manfaat
karena mereka melihat fitur baru
dan perbaikan bug
jauh lebih awal dalam siklus.
Sekarang saya akan menyerahkan
kepada rekan saya Pietro
untuk membahas pengujian.
Giliranmu.
-Terima kasih, Amrit.

Japanese: 
それ以外にも
50％のユーザーの間では
新しいバージョンに
アップグレードするまでの時間が
40％近く短縮されました
２つ目の例は「RedBus」です
APIをコードベースに導入した結果
40％のユーザーの間では
アップグレードするまでの日数が
10日から3日に短縮されました
最後に紹介するのは「Swiggy」
インドの
フードデリバリーアプリです
APIを導入した結果
アップデートしたユーザーが
70万人増加しました
これらの数字が示す通り
ユーザーの素早いアップデートは
アプリの利益になります
また ユーザーにも
メリットがあります
新機能やバグ修正をずっと早く
知れるからです
では 次はピエトロが
テストについて話します
ありがとう

Spanish: 
También registraron una reducción del 40%
en el tiempo
que tardaba el 50% de los usuarios
en actualizar a la versión nueva.
El segundo ejemplo es RedBus.
RedBus notó que el tiempo
que tardaba el 40% de sus usuarios
en actualizar a la nueva versión
se redujo de 10 a 3 días
después de implementar
la API en su código base.
Por último, hablaré sobre Swiggy,
una app de entrega de comida de India.
Registró un aumento de 0.7 millones
en la cantidad de usuarios
que actualizaron la app
después de implementar la API.
Como muestran estas cifras,
las apps se benefician
si los usuarios actualizan rápidamente.
Y los usuarios también se benefician
porque ven antes en el ciclo las nuevas
funciones y correcciones de errores.
Ahora le pasaré el mando
a mi colega Pietro,
que les hablará sobre las pruebas.
Gracias, Amrit.

Portuguese: 
Além disso,
tiveram quase 40%
de redução no tempo que levou
para 50% dos usuários
instalarem a nova versão.
O segundo exemplo é o RedBus.
RedBus percebeu que
o tempo gasto
para 40% dos usuários
instalarem a nova versão
foi reduzido de 10 para 3 dias,
depois que introduziram
essa API ao codebase.
Finalmente,
quero falar do Swiggy que é
um app de entrega de comida
na Índia.
Eles tiveram um aumento
de 0,7 milhões de usuários
fazendo atualização do app
depois da introdução da API.
Como os números indicam,
os apps
se beneficiam quando
os usuários atualizam mais rápido.
E os usuários também
porque eles vêem
novos recursos e correções de bugs
muito antes no ciclo.
Agora vou passar para
meu colega Pietro
que vai falar sobre testes.
Está com você.
Obrigado,
Amrit.

Korean: 
뿐만 아니라 사용자의 절반가량에서
새 버전으로
업그레이드하는 데 드는 시간이
40% 가까이 줄어들었습니다
다음은 RedBus의 사례입니다
RedBus 사용자의 40%가
새 버전으로
업그레이드하는 데 걸리는 시간을
10일에서 3일로 단축할 수 있었습니다
API를 코드베이스에 추가함으로써 말이죠
마지막으로 Swiggy라는
인도의 음식 배달 앱을 소개하겠습니다
API 도입 후
앱을 업데이트한 사용자 수가
70만 명이 늘었어요
이러한 수치가 보여주듯이
사용자가 빨리 앱을 업데이트하면
앱에 이득이 됩니다
사용자 또한 이를 통해 혜택을 보는데요
정해진 주기보다 훨씬 빨리
새로운 기능을 쓸 수 있고
버그도 해결할 수 있기 때문입니다
이제 제 동료인 피에트로에게 마이크를 넘겨
테스트에 관해 설명하겠습니다
자, 여기 있어요
고마워요

Chinese: 
不仅如此，50%的用户
升级到新版本所花费的时间
下降了40%
我想介绍的第二个例子是RedBus
RedBus发现，他们在代码库中
采用此API之后，40%的用户
升级到新版本的时间
从10天下降到3天
最后，我想介绍的是Swiggy
这是印度的一款美食外卖应用
他们采用此API之后
发现更新应用的用户增长了70万
这些数据表明，这些应用
因为用户更新速度加快而获得明显效益
用户也获得了好处
因为他们可以更早地发现
新功能和漏洞修复
接下来我想请我的同事Pietro
来跟大家谈谈测试
交给你了
谢谢，Amrit

Portuguese: 
Após a apresentação no I/O
deste ano,
um dos recurso mais pedidos
pelos usuários
é como testar a atualização
no app facilmente?
E o teste aqui é
feito em três fases...
durante o desenvolvimento,
no lançamento
e para suporte do lançamento
existente, para procurar bugs
e assim vai.
Durante o desenvolvimento,
temos o
FakeAppUpdateManager,
nele você usa teste
de unidade pra controlar
e verificar a lógica e
IU das atualizações no app.
Você pode definir que
há uma atualização
Então você chama todo
o código e a IU.
Assim você pode trazer
a atualização.
Você pode simular que
o usuário aceitou a atualização.
Você pode iniciar o download
e simular a conclusão do download.
Isso permite que você
faça o teste de unidade

Korean: 
올해 I/O에서
인앱 업데이트를 소개하고 나서
사용자로부터
가장 많은 요청을 받은 기능은 바로
인앱 업데이트를
쉽게 테스트하는 방법이었어요
여기서 테스트는
크게 세 단계로 나눌 수 있는데요
개발 단계, 출시 단계
버그 등 문제를 찾기 위한 출시 후의
지원 단계이죠
먼저 개발 단계에서의 테스트에서는
FakeAppUpdateManager를
사용할 수 있습니다
이를 통해 유닛 테스트를 사용해
인앱 업데이트에서의
로직과 UI를 확인하고
제어할 수 있습니다
이렇게 설정하면 업데이트가 가능하죠
그런 다음
여러분의 코드와 UI를 모두 불러와
이렇게 업데이트를 실행할 수 있습니다
사용자가 업데이트를 수락한 상황을
시뮬레이션할 수 있죠
다운로드의 시작과
다운로드 완료를
시뮬레이션해볼 수 있습니다
이렇게 여러분은 유닛 테스트를 하고

English: 
Since the introduction of
in-app updates at this year I/O,
one of the main feature
requests that we got from users
is, how we can test
in-app update easily?
And testing here is
really in three phases--
during development, at
the time of the release,
and to support the existing
release, to look at bugs
and so on.
So for testing
during development,
we have the
FakeAppUpdateManager,
where you can use your
unit test to control
and check out the logic and
UI of your in-app updates.
So you can set it up so that
there is an update available.
Then you call all
of your code and UI.
And then you can drive
the update in this way.
You can simulate that the
user has accepted the update.
You can start the download,
and you can simulate
that the download completes.
So this allows you
to do unit testing

Indonesian: 
Sejak diperkenalkannya
update dalam aplikasi pada I/O tahun ini,
salah satu permintaan fitur utama
yang kami dapat dari pengguna
adalah bagaimana kami menguji
update dalam aplikasi dengan mudah?
Dan pengujian di sini
terdiri dari tiga fase, yaitu
selama pengembangan,
saat rilis, dan saat memberi dukungan
rilis yang ada, misalnya
untuk mencari bug,
dan lainnya.
Sehingga untuk pengujian
selama pengembangan,
kami memiliki
FakeAppUpdateManager,
tempat Anda dapat menggunakan
pengujian unit untuk mengontrol
dan memeriksa logika dan
UI untuk update dalam aplikasi Anda.
Sehingga Anda bisa mengaturnya
agar ada update yang tersedia.
Lalu panggil
semua kode dan UI Anda.
Lalu Anda bisa mengarahkan
update dengan cara ini.
Anda bisa melakukan simulasi bahwa
pengguna telah menerima update.
Anda bisa memulai download,
dan melakukan simulasi
bahwa download selesai.
Ini memungkinkan Anda
melakukan pengujian unit

Spanish: 
Desde que presentamos
las actualizaciones integradas en la app
este año en I/O, una de las principales
solicitudes de funciones
que recibimos de los usuarios
fue una forma sencilla de hacer pruebas.
La prueba se realiza en tres fases:
durante el desarrollo,
en el momento de la publicación
y para admitir la versión reciente,
buscar errores, etcétera.
Para probar durante el desarrollo,
tenemos FakeAppUpdateManager,
donde pueden usar la prueba de su unidad
para controlar y revisar la lógica y la IU
de sus actualizaciones
integradas en la app.
Pueden configurar el código para que haya
una actualización disponible.
Entonces, llaman a todo el código y la IU
y, luego, ejecutan
la actualización de esta manera.
Así, simulan que el usuario
aceptó la actualización,
y pueden iniciar la descarga
y simular su finalización.

Japanese: 
今年のI/Oでアプリ内
アップデートを紹介した後
ユーザーから寄せられた
リクエストのひとつが
アプリ内アップデートの
テストの簡素化でした
テストには
３つのフェーズがあります
開発中と公開時
それから バグ発見など
既存のアプリのサポート時です
開発中のテストについては
FakeAppUpdateManagerを
使えます
ユニットテストにより
アップデートのロジックやUIを検証できます
コードの設定は画面のとおりです
アップデートの配信時は
コードとUIをすべて呼び出して
このように
アップデートを実行します
ユーザーのアップデート承認を
シミュレートし
ダウンロードを開始
そして ダウンロード完了まで
シミュレートします
これでユニットテストを行い

Chinese: 
自从今年在I/O大会中推出应用内更新之后
我们从用户那里收到的一个主要功能请求是
如何轻松测试应用内更新？
在这里测试实际上分为三个阶段
开发期间、发行时
以及现有版本支持阶段，例如修复漏洞
等等
对于开发期间的测试
我们有FakeAppUpdateManager
通过它，您可以使用单元测试来控制
和检查应用内更新的逻辑和UI
您可以进行设置，提供一个更新
然后，调用所有代码和UI
并按以下方式来推动更新
您可以模拟用户已接受更新的情况
开始下载，然后模拟
下载已完成的情况
这样，您就可以执行单元测试

Portuguese: 
e veja como o código
da atualização funciona
O próximo teste é quando
há um novo lançamento
e quando você quer
introduzir um tester Beta.
E outro recurso
que apresentamos no I/O
este ano foi
o compartilhamento interno no app
No compartilhamento interno,
você faz upload de uma APK
ou pacotes no app.
O Play gera um URL compartilhável
para você.
E o tester pode usar
este URL para testar
o app e o pacote com a
entrega dinâmica no dispositivo.
Estamos anunciando
a ativação do uso
do compartilhamento interno para testar
o fluxo da API de atualizações no app.
Como o compartilhamento interno
funciona?
No Console,
você tem esta página
onde você faz upload da
APK ou do pacote de apps.
E ela gera o link para você.
Você precisa configurar quem pode
fazer upload da APK
e do pacote de apps e quem pode 
usar o link gerado.
Tenha em mente que o Play
vai assinar um específico...

Spanish: 
Podrán probar unidades y revisar
si funciona el código de la actualización.
Luego, deben probar las nuevas versiones.
Allí, introduciremos pruebas Beta.
Una de las funciones
que presentamos este año en I/O
es el uso compartido interno de apps.
Este uso permite subir
paquetes integrados en la app o APK
para que Play genere
una URL que se puede compartir.
Y el usuario de prueba
puede usarla para probar la aplicación
y el paquete en el dispositivo
mediante publicación dinámica.
Ahora, anunciaremos la habilitación
del uso compartido interno de apps
para probar sus flujos de API
de actualizaciones integradas en la app.
¿Cómo funciona
el uso compartido interno de apps?
En la consola, tienen esta página web,
en la que pueden
subir el APK o paquete de la app
para generar el vínculo.
Deben configurar quién puede
subir el APK y el paquete de la app,
y quién puede usa
el vínculo que se genera.
También deben recordar
que Play firmará un certificado específico

Korean: 
업데이트 코드가 어떻게 작동하는지
확인할 수 있습니다
두 번째는 출시 단계에서의 테스트입니다
베타 테스터에게 공개할 수 있습니다
저희가 올해 I/O에서 선보인
또 다른 기능은
내부 앱 공유 기능입니다
이 기능을 통해
인앱 번들 또는
APK를 업로드할 수 있는데요
그러면 Play가
공유 가능한 URL 링크를 생성합니다
이 URL 링크를 사용해
테스트를 진행할 수 있고
기기상의 앱과
Dynamic Delivery를
보유한 번들을
테스트할 수 있어요
이제, 이 내부 앱 공유 기능을 사용해
인앱 업데이트 API 절차를
테스트할 수 있음을
발표하고자 합니다
내부 앱 공유의 원리는 무엇일까요?
여기 Console을 보면
APK나 앱 번들을 업로드할 수 있는
이런 웹페이지가 있는데요
그러면 여기서
여러분을 위한 링크가 생성되죠
여러분은 누가 APK와 앱 번들을
업로드할 수 있는지
누가 생성된 링크를 사용할 수 있는지
지정해야 합니다
또 한 가지 기억해야 할 점은
Play가 특정한 경우를 지정할 텐데요

Indonesian: 
dan memeriksa cara
kode update Anda bekerja.
Selanjutnya adalah pengujian saat
Anda memiliki rilis baru,
yaitu saat Anda ingin 
memperkenalkan penguji beta.
Dan fitur lain
yang kami perkenalkan di I/O
tahun ini adalah
berbagi aplikasi internal.
Dengan berbagi aplikasi internal,
yang Anda lakukan adalah mengupload
in-app bundle atau APK.
Play membuat
URL yang dapat dibagikan untuk Anda.
Dan penguji dapat menggunakan URL ini
untuk menguji aplikasi
dan bundle itu dengan pengiriman dinamis
pada perangkat.
Sekarang kami umumkan
bahwa kami mengaktifkan
penggunaan berbagi aplikasi internal
untuk menguji alur API
update dalam aplikasi Anda.
Jadi bagaimana cara kerja
berbagi aplikasi internal?
Pada Konsol, ada halaman web ini,
untuk mengupload
APK atau app bundle.
Dan ini membuat link untuk Anda.
Anda perlu menyiapkan siapa yang bisa
mengupload APK dan app bundle
dan siapa yang dapat menggunakan
link yang telah dibuat.
Hal lain yang perlu diingat adalah Play
akan menandatangani sertifikat

Japanese: 
更新したコードの動作を
検証できます
次に 公開時のテスト
つまり ベータテスターです
今年のI/Oで紹介した
別の機能が 内部アプリ共有です
内部アプリ共有では
アプリ内のバンドルやAPKを
アップロードすると
共有可能なURLをPlayが生成します
テスターはこのURLから
動的配信されるアプリとバンドルを
テストできます
本日から 内部アプリ共有が
アプリ内アップデートの
APIフローテストに利用可能になります
その仕組みを説明します
このウェブページは
コンソールです
ここでAPKやアプリのバンドルを
アップロードします
すると リンクが生成されます
APKやアプリのバンドルを
誰がアップロードし
生成されたリンクに誰がアクセスできるか
設定する必要があります
別の注意点ですが
Playでは 特定のアプリ署名が必要です

Chinese: 
检查更新代码的运行情况
接下来是在发行新版本时测试
如果您想引入Beta版测试人员
今年我们在I/O大会中推出了另一项功能
内部应用分享
利用此功能，您只需
上传应用内bundle或APK
Play便会为您生成一个可分享的网址
测试人员可以使用这个网址
通过Dynamic Delivery在设备上
测试应用和bundle
我们现在宣布，我们已经实现
使用内部应用分享来测试In-app Updates API
流程
那么内部应用分享如何使用？
在管理中心，您通过这个网页
上传APK或app bundle
它会为您生成链接
您需要设置
谁可以上传APK和app bundle
谁可以使用生成的链接
另外还要注意的是
在这个例子中，Play会

English: 
and check how your
update code works.
Next is testing when
you have a new release,
so when you want to
introduce a beta tester.
And one other feature
we introduce at I/O
this year is
internal app sharing.
With internal app
sharing, what you do
is that you upload
in-app bundle or an APK.
The Play generates for
you a sharable URL.
And the tester can
use this URL to test
that application and the
bundle with dynamic delivery
on the device.
We are now announcing
that we are enabling
the use of internal app sharing
to test your in-app updates API
flow.
So how does it work,
internal app sharing?
On the Console, you
have this web page,
where you upload the
APK or the app bundle.
And it's generating
for you the link.
You need to set up who can
upload the APK and the app
bundle and who can use the
link that is generated.
The other thing to
remember is that Play
is going to sign a specific--

English: 
we have a different certificate,
your application in this case.
So if you are using
third-party SDK that
needs to have the certificate,
you need to download from here.
And you can use in this case,
like for every other time
that you're using internal
app sharing, the [INAUDIBLE]..
The version code
is not important
that you increment every
time the version code
because Play is going to place
a new version code for you when
you upload a new
APK or a new bundle.
In the configuration
of the console,
you need to enable internal
app sharing on the device,
on the client.
So you open the Play
application on the device.
In the settings, you tap seven
times on the version code.
You get a new toggle to
enable internal app sharing,
and you turn it on.
And you are good to go testing
using internal app sharing.
For in-app updates,
it's a bit tricky
to get the flow
at the beginning.
So the idea is that you install
a version with internal app
shading.

Indonesian: 
berbeda atau spesifik,
dalam kasus ini aplikasi Anda.
Jika Anda menggunakan
SDK pihak ketiga
yang perlu memiliki sertifikat,
Anda perlu mendownloadnya dari sini.
Dalam kasus ini Anda dapat menggunakannya,
seperti biasanya saat
Anda memakai berbagi aplikasi internal,
[...]
Kode versi tidak penting
yang ditambahkan
setiap kali versi dikodekan
karena Play akan menempatkan
kode versi baru untuk Anda saat
Anda mengupload APK
baru atau bundle baru.
Di konfigurasi konsol,
Anda perlu mengaktifkan 
berbagi aplikasi internal pada perangkat,
pada klien.
Sehingga Anda membuka aplikasi Play
pada perangkat.
Di setelan, ketuk tujuh
kali pada kode versi.
Anda mendapatkan tombol baru untuk
mengaktifkan berbagi aplikasi internal,
dan aktifkanlah itu.
Dan Anda siap untuk melakukan pengujian
menggunakan berbagi aplikasi internal.
Untuk update dalam aplikasi,
awalnya akan sedikit rumit
untuk memahami alurnya.
Jadi intinya Anda menginstal
versi dengan berbagi aplikasi internal.

Korean: 
여기에서 저희는
다른 인증서를 가지고 있으며
여러분의 앱이 바로 여기에 해당하죠
그러니까 여러분이 인증서가 필요한
제3자 SDK를 사용한다면
여기에서 다운로드하시면 됩니다
또 이 경우, 다른 경우와 마찬가지로
내부 앱 공유와
버그 빌드를 사용할 수 있습니다
여기서 버전 코드는 중요하지 않습니다
여러분은 버전 코드를 매번 올리게 되는데
이는 여러분이 새 APK나
새 번들을 업로드할 때마다
Play가 여러분에게
새로운 버전 코드를 부여하기 때문이죠
Console 구성에서는
기기에서, 클라이언트에서
내부 앱 공유를 할 수 있도록
해야 합니다
Play 앱을 기기에서 열고
설정에서 버전 코드를 7번 탭하면
내부 앱 공유를 켤 수 있는
전환 버튼이 나타나는데요
이를 실행하면
내부 앱 공유를 활용해
테스트할 준비가 된 겁니다
인앱 업데이트는 조금 까다로운데요
처음에 절차를 잡기가 좀 어렵습니다
그래서 나온 아이디어는
내부 앱 공유를 이용해 버전을
설치하는 것입니다

Spanish: 
para su aplicación en este caso.
Por lo tanto, si usarán un SDK de terceros
que necesita el certificado,
deben descargarlo aquí.
Pueden usarlo en este caso
y en cualquier otro en el que implementen
el uso compartido de apps o back build…
No es necesario incrementar
el código de versión cada vez,
ya que Play creará
un nuevo código de versión
cuando suban un nuevo APK o paquete.
En la configuración de la consola,
deben habilitar el uso compartido
de la app en el dispositivo,
en el cliente.
Entonces, abren
la aplicación de Play en el dispositivo.
En la configuración, presionan
siete veces el código de la versión.
Verán un nuevo interruptor para habilitar
el uso compartido interno de la app.
Deben activarlo.
Así, podrán empezar a probar
el uso compartido interno de la app.
Para las actualizaciones integradas,
el flujo es un poco
más complejo al principio.
La idea es instalar una versión
con uso compartido interno.

Japanese: 
アプリ署名が必要な
サードパーティのSDKを使う場合
ここから
ダウンロードしてください
内部アプリ共有を使う
他のケースでも同じです
アプリのバージョニングは
重要ではありません
新しいAPKやバンドルを
アップロードすると
Playが新しいバージョンコードを
設定するからです
クライアント側のデバイスでは
内部アプリ共有を有効にします
まずデバイスで
Playアプリを開きます
設定でバージョンコードを
７回タップすると
内部アプリ共有を有効にする
トグルスイッチが現れます
それをオンにします
これで 内部アプリ共有を使った
テストの準備ができました
アプリ内アップデートの
コンセプトを理解するには

Chinese: 
为应用签署一个不同的证书
如果您使用的是第三方SDK
就需要有这个证书，可以从这里下载
在这种情况下，就像您每次使用
内部应用分享时一样[听不清]
版本号并不重要
您不用每次递增版本号
因为您上传新APK或新bundle时
Play会为您生成新的版本号
配置管理中心时
您需要在设备上、客户端上启用
内部应用分享
您在设备上打开Play应用
在“设置”中轻触版本号七次
就会出现一个新的切换开关
用于启用内部应用分享
把它打开
就可以使用内部应用分享进行测试
对于应用内更新
一开始可能不太容易理解整个流程
具体方法是使用内部应用分享
安装一个版本

Portuguese: 
temos um certificado diferente,
seu aplicativo neste caso.
Se estiver usando
um SDK de terceiros que
precisa ter o certificado,
você precisa fazer o download aqui.
E você pode usar nesse caso,
como em todas as outras vezes
que usar o compartilhamento
interno, o [INAUDÍVEL]
O código da versão
não é importante
que você incremente toda
vez o código da versão
porque o Play vai colocar
um novo código de versão quando
você fizer upload de uma nova
APK ou um novo pacote.
Na configuração
do console,
você precisa ativar o compartilhamento
interno no app no dispositivo
no cliente.
Então você abre o aplicativo
Play no dispositivo.
Nas configurações,
toque 7 vezes no código de versão
para ver o botão para ativar o
compartilhamento interno no app.
E você o ativa.
E está pronto para testar
usando o compartilhamento interno.
Para atualizações no app,
é um pouco complicado
pegar o fluxo
no começo.
A ideia é que você instale uma versão
com o compartilhamento interno.

Indonesian: 
Anda lalu dapat menggunakan file
upload yang sama, versi yang sama.
Dapatkan link baru dengan
kode versi baru yang dibuat Play.
Buka link pada perangkat Anda.
Dan Anda mendapatkan pop-up
dengan update.
Saya memiliki video untuk menjelaskan
ini sedikit lebih jelas.
Jadi Anda mendapat pop-up
dengan update.
Saat ini, Anda dapat
masuk ke aplikasi Anda,
lalu API update dalam aplikasi akan
melihat update saat itu.
Sehingga Anda perlu mengikuti linknya.
Jangan klik pada 
tombol Update dari Play Store.
Dan lalu di aplikasi,
Anda dapat memeriksa
update dalam aplikasi yang bekerja.
Tempat pertama 
untuk melakukan pengujian
yaitu untuk versi yang siap dirilis.
Jika Anda memiliki bug
seseorang akan melaporkan
bug di versi yang Anda rilis
tiga bulan lalu,
ini tidak terupdate dengan benar.
Kami memiliki versi baru yang sedang
kami rilis sekarang.
Kami mengumumkan
bahwa kami akan segera
membuat link virtual historis tersedia,

Chinese: 
然后上传相同的版本
就会获得Play生成的
包含新版本号的新链接
在设备上打开该链接
就会获得更新弹窗提示
我有个视频
可以更清楚地解释这一点
现在您收到了更新弹窗提示
这时您可以进入应用
In-app Updates API将会看到此更新
您需要点击该链接
而不是在Play商店点击“更新”按钮
然后，您可以在您的应用中
检查应用内更新的运行情况
适用该测试的第一种情况是
测试准备发行的版本
如果您发现漏洞
例如，有人报告您三个月前
发行的版本中存在漏洞
无法正确更新
您就可以发行新的版本
我们宣布，我们很快就会
提供历史虚拟链接

Spanish: 
Pueden usar la misma versión que subieron.
Obtendrán un nuevo vínculo
y un código de versión generado por Play.
Ábranlo en el dispositivo
y verán un mensaje emergente
con la actualización.
Tengo un video
que lo explicará más claramente.
Cuando aparece la ventana emergente
con la actualización, pueden abrir la app
y la API de actualizaciones integradas
verá la actualización.
Deben seguir el vínculo.
No hagan clic
en el botón "Actualizar" en Play Store.
Luego, en la aplicación,
pueden ver que la actualización
integrada en la app funciona.
El primer lugar
en el que pueden ejecutar la prueba
son las versiones
que están listas para publicarse.
Si, por ejemplo, se informa un error
en la versión que publicaron
hace tres meses
porque no se actualiza correctamente,
tenemos la nueva versión
que se publicará.
Anunciaremos que pronto
pondremos a disposición
vínculos a versiones históricas,

English: 
You can use then the same
upload, the same version.
Get a new link with a new
version code generated by Play.
You open the link on the device.
And you get the pop-up
with the update.
I have a video to explain
this a bit more clearly.
So you get the pop-up
with the update.
At this moment, you can
go in your application,
and then in-app updates API will
see the update at the moment.
So you need to follow the link.
Don't click on the Update
button from the Play Store.
And then in your
application, you
can check that the
in-app update works.
The first place where
you can do testing
is for versions that are
ready to be released.
If you have a bug--
someone is reporting
a bug in the version
that you released
three months ago,
it's not updating correctly.
We have the new version
we're releasing now.
We are announcing
that shortly we
will make available historical
virtual links, where

Korean: 
여기서 같은 업로드,
같은 버전을 사용할 수 있는데요
Play가 새로운 버전 코드를 가진
새 링크를 생성해내면
기기에서 그 링크를 엽니다
그러면 업데이트 팝업 창이 뜨는데요
이를 잘 설명해주는 영상이 있습니다
업데이트 팝업이 뜨고
이때 여러분이 앱으로 가면
In-App Updates API가
업데이트를 감지하므로
링크를 따라가면 됩니다
Play 스토어의 업데이트 버튼은
클릭하지 마세요
이때 앱으로 들어가면
인앱 업데이트 작업을 확인할 수 있어요
테스트의 출발점은 바로
출시 준비가 된 버전을 테스트하는 겁니다
버그가 있다면
누군가가 여러분이 3개월 전에 출시한
특정 버전에서의 버그를 신고한다면
이는 업데이트가
제대로 안 되고 있다는 뜻인 거죠
현재 출시하려는 새로운 버전이 있는데요
저희는 곧 이전 가상 링크를
공개할 예정입니다
매우 유사한 절차를 통해

Japanese: 
内部アプリ共有で 同一バージョンを
新規にアップロードしてみましょう
Playは 新バージョンとして扱い
新しいリンクを生成します
リンクをデバイスで開くと
アップデートの
ポップアップが表示されます
よりわかりやすい
動画を用意しました
ポップアップが表示されます
この時 アプリに行くと
アプリ内アップデートのAPIが
アップデートを検知します
リンクに従います
Playストアのアップデートボタンは
使わないでください
これで アプリ内アップデートが機能するか
アプリ側でチェックできます
テストで最初に思い浮かぶのは
公開準備ができたバージョンです
しかし ３か月前にリリースした
バージョンでバグが報告され
正常にアップデートされないとしたら？
そこで 以前のAPKをダウンロードし
アップデートをテストできる

Portuguese: 
Você pode usar o mesmo upload,
a mesma versão.
Pegue um novo link com um novo
código de versão gerado pelo Play.
Abra o link no dispositivo.
E receba o pop-up
com a atualização.
Tenho um vídeo para explicar
isso melhor.
Você recebe o pop-up
com atualização.
Nesse momento,
você pode acessar seu app,
e a API de atualizações no app vai
ver a atualização no momento.
Então,
é necessário seguir o link.
Não clique no botão
Atualizar na Play Store.
E no seu app, você pode ver que a
atualização no app funciona.
O primeiro lugar em que
você pode testar
é para versões que já
foram lançadas.
Se houver um bug...
alguém estiver relatando
um bug na versão
que você lançou
3 meses atrás,
não está atualizando
direito.
Temos uma nova versão
que lançamos agora.
Estamos anunciando
que brevemente
haverá links para versões
históricas disponíveis

Portuguese: 
para download de um APK de uma
versão antiga usando um
fluxo muito similar e
testar com esse link
a atualização com a nova versão.
Procurem mais
informações nos próximos dias
sobre os links de
versões históricas
que vamos disponibilizar em breve.
Agora o Alessandro
vai falar
sobre as novidades que virão
para as atualizações no app.
Sim.
Obrigado,Pietro.
Vou falar mais sobre
os novos recursos em que
estamos trabalhando depois do Google I/O
com base nas principais demandas.
Primeiro,
vamos apresentar
alguns novos sinais que
ajudam você a
decidir quando acionar uma atualização
no app, que fluxo acionar
e com que rapidez e quanto
promovê-la na sua IU.
Esses sinais são a prioridade da
atualização e inatividade do app.

English: 
you can download an APK from
an older version using the very
similar flow and
test with this link
the update with the new version.
So look out for more
information in coming weeks
about the historical
virtual links
we will make available shortly.
Next is Alexandro
that is going to talk
about some new exciting features
coming in in-app updates.
ALESSANDRO DOVIS: Yeah,
thank you, Pietro.
So I'm going to tell
you something more
about a few new
features that we've
been working on after Google I/O
based on some of your top asks.
So first of all, we're
going to introduce
a couple of new signals that
will help you essentially
decide when to trigger an in-app
update, which flow to trigger,
and how promptly, how much
to promote it in your UI.
And these are the update
priority and the app staleness.

Japanese: 
履歴仮想リンクを
近日中に提供します
先と同じワークフローで
アップデート機能をテストできます
履歴仮想リンクの
利用開始については
今後数週間の発表に
ご注目ください
続いて アレサンドロが
今後のアプリ内アップデート
についてお話しします
どうも
Google I/Oの後
多くの要望が寄せられました
それを基に新機能を開発してきました
まず 新しいシグナルを３つ導入しました
これらはアプリ内アップデートを
トリガーするタイミングや
トリガーするフロー
などを決めるのに役立ちます
それがこの２つ
アップデートの優先度（priority）と
アプリの陳腐化（staleness）です

Indonesian: 
untuk mendownload APK
versi lama menggunakan
alur yang sama persis dan
menguji dengan link
update dengan versi baru.
Sehingga perhatikan informasi
lebih lanjut beberapa minggu mendatang
tentang link virtual historis
kami akan segera membuatnya tersedia.
Selanjutnya Alexandro akan bahas
beberapa fitur baru yang menarik
yang akan datang di update dalam aplikasi.
-Ya. Terima kasih, Pietro.
Jadi saya akan
jelaskan lebih jauh
fitur-fitur baru yang kami kerjakan
setelah Google I/O berdasarkan
beberapa permintaan teratas Anda.
Pertama-tama, kami
akan perkenalkan
beberapa sinyal baru
yang pada dasarnya akan membantu Anda
menentukan kapan untuk memicu update 
dalam aplikasi, alur mana yang dipicu,
dan seberapa cepat, seberapa banyak 
sinyal dipromosikan di UI Anda.
Dan ini adalah prioritas
update dan ketidakrelevanan aplikasi.

Spanish: 
en los que pueden descargar
el APK de una versión anterior
con el mismo flujo de trabajo
y, con este vínculo,
probar la actualización
en la nueva versión.
Las próximas semanas,
recibirán más información
sobre los vínculos a versiones históricas
que pronto pondremos a disposición.
A continuación, Alessandro hablará
sobre algunas de las nuevas funciones
que llegarán a las actualizaciones
integradas en la app.
Sí, gracias, Pietro.
Voy a hablarles más sobre algunas
de las nuevas funciones
en las que estuvimos trabajado
después de Google I/O,
basadas en lo que más nos pedían.
En primer lugar, presentaré
algunos indicadores que los ayudarán
a decidir cuándo iniciar
una actualización integrada en la app,
qué flujo usar, en qué momento
y cómo promoverlo en la IU.
Y estas son la prioridad de la app
y su estado de desactualización.

Chinese: 
您可以使用几乎相同的流程
从旧版本下载APK
还可以利用该链接
测试新版本的更新情况
接下来几周，请注意有关
历史虚拟链接的更多信息
我们很快就会推出该功能
下面交给Alexandro，他会介绍
应用内更新将要
推出的一些令人振奋的新功能
好的，谢谢，Pietro
我想详细介绍一下
在I/O大会之后，应大家的强烈要求
我们正在努力开发的一些新功能
首先，我们将推出
几项新指标，帮助大家
决定何时触发应用内更新、触发什么流程
以及在什么时候
以多大强度在您的UI中推广更新
这些指标就是更新优先级和应用陈旧程度

Korean: 
APK를 구버전에서 다운로드할 수 있고
이 링크를 통해
새 버전의 업데이트를
테스트할 수 있습니다
저희가 곧 출시할
이전 가상 링크에 관한
보다 자세한 내용은
몇 주 후에 살펴보실 수 있습니다
다음 순서로, 알렉산드로가
인앱 업데이트의 몇 가지 새로운 
기능을 설명할 것입니다
네, 감사해요
Google I/O 이후
개발자 여러분들의 요청에 따라
저희가 작업 중인
몇 가지 새로운 기능에 대해
좀 더 자세히 말씀드리고자 합니다
먼저, 새로운 신호 몇 가지를
소개할 예정입니다
이 신호는
언제 인앱 업데이트를 진행할 것인지
어떤 절차를 트리거할 것인지
UI에서 얼마나 신속하게
얼마나 많은 절차를 트리거할지
결정하는 것을 도와주죠
이러한 신호는 업데이트 우선순위와
앱의 비활성 정도입니다

Portuguese: 
Em segundo lugar,
vamos mostrar informações mais refinadas
sobre o progresso da atualização
durante o download.
Vamos falar sobre
cada item individual em breve.
Mas primeiro, vamos ver
um snippet de código
para dar algum
contexto.
Aqui tenho um
snippet no meu app demo.
E aqui estou buscando na
API a AppUpdateInfo
para detectar se há
uma atualização disponível.
E se a atualização
estiver disponível
tenho que decidir o que fazer.
Preciso decidir se aciono
a atualização
e que fluxo usar.
E essa é exatamente
a situação
que será mais fácil com os
sinais que vamos mostrar.
Então o primeiro sinal
é prioridade.
A prioridade representa
a importância
de uma atualização.
Algo com uma
prioridade mais alta
é algo que você
entende que
é mais importante para
seu usuário.
A prioridade é
algo que você
define quando lança seu
app para cada versão.

English: 
Secondly we are exposing some
more fine-grained information
about the progress of the update
as the update is downloading.
So we're going to go
through each of them
individually very soon.
But first, let's take a
look at a snippet of code
to give some more
context to this.
So here, I've got a
snippet in my demo app.
And here, I'm fetching from
the API the AppUpdateInfo
to detect whether there is
an update available or not.
And if I see that the
update is available,
now I have to decide what to do.
I need to decide whether
to trigger in-app update
and which flow to use.
And this is exactly
the situation
that will be made
simpler by the signals
that we are going to expose.
So the first signal is priority.
The priority essentially
represents the importance
of an update.
So something that
has a higher priority
is something that you
can see that should be
of higher value for your user.
The priority is
something that you
define when you release your
app for each of your releases.

Japanese: 
次に アップデートをダウンロード中の
進捗表示（progress）をより詳細にしました
これらについてお話しする前に
背景を理解するため
コードスニペットを見てみましょう
ここでは デモアプリに
スニペットがあります
利用可能なアップデートを検出するために
「AppUpdateInfo」APIを呼び出しています
アップデートが利用可能なら
何をするか決めます
アプリ内アップデートを
トリガーするか？
どのフローを使うか？です
この状況はまさに
新しいシグナルによって
簡単になります
最初のシグナル「priority」ですが
これは
アップデートの重要性を表します
priorityが高い＝ユーザーにとって価値が高い
ということです
priorityは アプリをリリースするたびに
定義します

Spanish: 
En segundo lugar, expondré
información más detallada
sobre el progreso de la actualización
a medida que se descarga.
Entonces, muy pronto veremos cada una
de manera individual.
Pero, antes, veamos un fragmento de código
que nos dará un poco de contexto.
Aquí, tengo un fragmento
de mi app de demostración.
Obtendré el AppUpdateInfo de la API
para detectar
si hay actualizaciones disponibles.
Si veo que hay una disponible,
debo decidir qué hacer.
Debo decidir si iniciar
una actualización integrada
y qué flujo usar.
Esta situación se verá simplificada
por los indicadores que voy a exponer.
El primer indicador es la prioridad.
La prioridad, esencialmente, representa
la importancia de una actualización.
Algo que tiene una prioridad mayor
es algo que pueden ver
que tiene un mayor valor para el usuario.
La prioridad es algo que deben definir
cuando publiquen
cada una de las versiones de su app.

Korean: 
두 번째로는 업데이트 다운로드 시
업데이트 진행 상황에 대한
더욱 자세한 정보를 제공하는 것인데요
곧 이 두 가지 기능을 각각
살펴보도록 하죠
그보다 먼저, 배경 상황을 파악하기 위해
코드 스니펫에 대해 살펴보겠습니다
여기, 제 데모 앱에는
스니펫 하나가 있습니다
업데이트가 있는지 확인하기 위해
API에서 AppUpdateInfo를
호출합니다
업데이트가 있다는 것을 확인하면
다음으로 할 일을 결정하게 됩니다
인앱 업데이트를 트리거할지
또 어떤 절차를 사용할지 등을 말이죠
신호를 사용하면 이러한 상황을
보다 단순하게 만들 수 있습니다
이것이 바로 저희가 보여드리려는
것입니다
첫 번째 신호는 우선순위입니다
이 우선순위는 본질적으로
업데이트의 중요성을
보여주는 것입니다
더 높은 우선순위를 가지는 것은
사용자에게 더 높은 가치를 주는 것으로
판단되는 항목입니다
또한 우선순위는 여러분이
각 버전별로 앱을 출시할 때
정의하는 것입니다

Indonesian: 
Kedua, kami akan memaparkan
lebih banyak informasi terperinci
tentang progres update saat 
upadate sedang didownload.
Kita akan segera bahas satu per satu.
Tapi pertama, perhatikan
cuplikan kode itu
untuk memberikan lebih banyak konteks.
Jadi di sini, saya mengambil cuplikan
dari aplikasi demo saya.
dan ini saya ambil
dari API AppUpdateInfo
untuk mendeteksi apakah 
update tersedia atau tidak.
Dan jika saya lihat update tersedia,
saya tahu apa yang harus dilakukan.
Saya perlu menentukan pemicu
update di aplikasi
dan alur penggunaanya.
Dan inilah situasi yang akan 
dibuat lebih sederhana oleh sinyal
yang sebentar lagi akan kita paparkan.
Jadi sinyal pertama adalah prioritas.
Prioritas pada dasarnya 
mewakili pentingnya
update.
Sehingga sesuatu yang punya
prioritas lebih besar
adalah hal yang dapat dilihat
dan bernilai tinggi untuk pengguna Anda.
Prioritas adalah hal yang
Anda tentukan saat merilis
untuk setiap rilis aplikasi Anda.

Chinese: 
其次，我们将提供更深入详细的信息
在下载更新时显示更新的进度
接下来我们逐一
介绍这些功能
在此之前，我们先来看一段代码
多了解一些相关背景
我在演示应用中准备了一段代码
我要从API中获取AppUpdateInfo
以检测是否有可用的更新
如果我发现有可用的更新
就需要决定怎么做
我需要决定是否触发应用内更新
使用哪个流程
对于这种情况
正好可以利用我们即将提供的指标
更轻松地做出决定
第一个指标是优先级
优先级表示
更新的重要性
更新的优先级越高
就表示您认为
它对您的用户价值越大
优先级是您每次发行
应用版本时，都需要定义的指标

Japanese: 
そしてシステムを介して伝達され
実行時にAPIを通じて
ユーザーに返されます
つまりアップデートのpriorityにより
UXをコントロールできます
具体的には
アップデートのpriorityは
０～５の整数値です
個々の値については
正確なセマンティクスが
義務付けられています
アプリ更新の必要性に基づいて
これらの値のセマンティクスを
自由に調整し
しきい値を定義できるように
するためです
では コードスニペットに戻り
実際の使い方を見てみます
ここではわかりやすい方法で
やってみます
新しい部分をハイライトします
ここで priorityが
３より大きければ
Immediate flowをトリガー
それ以外は
Flexible flowへ戻ります
ここでの３という数字は
思い付きで選んだものです

Indonesian: 
Lalu akan disebarkan
melalui sistem kami
dan kembali lagi pada Anda
saat runtime melalui API.
Di sini, anda dapat menentukan
untuk menunjukkan perbedaan 
pengalaman pengguna berdasarkan
prioritas update.
Lebih konkretnya, prioritas update
adalah nilai bilangan bulat 
antara nol dan lima.
Dan kita memberikan mandat
semantik yang tepat
dari tiap-tiap nilai individu
karena kita ingin memastikan
Anda memiliki kebebasan
untuk menyesuaikan semantik nilai ini
dan untuk menentukan ambang batas
berdasarkan kebutuhan
pembaruan aplikasi Anda.
Mari kembali ke cuplikan kode
dan lihat cara saya mempraktikannya.
Di sini, saya lakukan hal
yang sederhana.
Saya perjelas bagian yang baru.
Yang saya lakukan di sini,
jika prioritasnya lebih besar dari tiga,
saya akan memicu Immediate flow.
Jika tidak, akan saya tarik 
kembali ke Flexible flow.
Di sini, angka tiga adalah murni arbitrer 
untuk aplikasi saya.
Sehingga anda mungkin perlu 
menyesuaikan dan mengubah nilainya

Portuguese: 
E está sendo propagada
em nossos sistemas
e volta para você
no tempo de execução via API.
Nesse momento,
você pode decidir
mostrar uma experiência
de usuário diferente
com base na prioridade da atualização.
Mais concretamente,
a prioridade da atualização
é um valor inteiro que
está entre 0 e 5.
E nós exigimos
a semântica exata
de cada um dos valores
individuais porque
queremos garantir
sua liberdade
para personalizar a semântica
desses valores
e para definir os limites de acordo com
as necessidades recentes do seu app.
Vamos voltar para
o snippet de código
e ver como estou usando
na prática.
Aqui estou fazendo algo
bem simples
Vou destacar a parte nova.
Aqui estou fazendo assim,
se a prioridade for maior que 3
então aciono
o fluxo imediato.
Se não,
volto para o flexível.
E aqui o número 3 é
arbitrário para meu app.
Você pode personalizar
esse valor e ajustá-lo

Chinese: 
它会在我们的系统中传播
再通过API在运行时返回给您
此时您便可以决定
根据更新的优先级
提供不同的用户体验
更具体地说，更新优先级
是一个介于0至5之间的整数
我们要求对每项值
采用准确语义，因为我们要
确保您可以自由地
为这些值定制语义
并根据应用的新旧程度需求来定义
阈值
我们回到这段代码
看看我是如何使用该功能的
我的做法非常简单直观
我们突出显示一下新的部分
在这里我决定，如果优先级大于3
就触发即时流程
否则就采用灵活流程
这里的数值3纯粹是为我的应用随机决定的
您可以根据您的需求

English: 
And then it's being
propagated through our systems
and gets back to you
at runtime via the API.
And at that point,
you can decide
to show a different
user experience based
on the priority of the update.
So more concretely,
the update priority
is an integer value that
goes between 0 and 5.
And we do mandate
the exact semantics
of each of the individual
values because we
want to make sure that
you have the freedom
to tailor the semantics
of these values
and to define the thresholds
based on your app freshness
needs.
So let's go back to
the snippet of code
and see how I'm using
that in practice.
So here I'm doing something
rather straightforward.
Let me highlight the new part.
So here I'm doing like, if
the priority is bigger than 3,
then I'm triggering
the Immediate flow.
Otherwise, I'm pulling
back to the Flexible flow.
And here, the number 3 is
purely arbitrary for my app.
So you might tailor
this value and tweak it

Korean: 
이는 또한 저희의 시스템을 통해 전파되고
API를 통해 런타임 동안
여러분에게 다시 돌아갑니다
이때 여러분은
업데이트의 우선순위를 기반으로
다른 사용자 경험을
보여줄 것인지를 결정할 수 있습니다
좀 더 자세히 설명하자면
업데이트 우선순위는
0과 5 사이의 정수라고 할 수 있는데요
저희는 여기서 개별적인 값의
정확한 의미를 규정하죠
이는 여러분이 이러한 값의 의미를
원하는 대로
조정할 수 있게 하기 위함입니다
또한 앱 최신성에 대한 요구를 바탕으로
기준치를 정의하기 위함이기도 하죠
코드 스니펫으로 다시 돌아가 봅시다
제가 실제로 이를 어떻게 사용하는지
보여드리도록 하죠
좀 더 직접적으로 보여드리려고 하는데요
새로운 부분을 조명해보겠습니다
여기서 저는 우선순위가 3보다 클 경우
즉시 업데이트를 트리거하고자 합니다
반대의 경우에는
유연한 업데이트로 돌아갑니다
여기서 3이라는 숫자는
단순히 제 앱에서의 임의의 숫자예요
따라서 여러분은
이 값을 조정하거나 살짝 바꾸어

Spanish: 
Luego, se propagará en nuestros sistemas
y lo verán mediante la API
durante el tiempo de ejecución.
En ese momento,
pueden decidir si mostrar otra
experiencia del usuario
basada en la prioridad
de la actualización.
En concreto, la prioridad
de la actualización
es un valor entero entre 0 y 5.
Y es obligatorio usar
las mismas semánticas
de cada valor individual
porque queremos
asegurarnos de tener la libertad
para personalizar
las semánticas de esos valores
y definir los límites en función
de la necesidad de actualizar la app.
Volvamos al fragmento de código
y veamos cómo lo uso en la práctica.
Aquí, haré algo directo.
Destacaré la parte nueva.
Aquí, si la prioridad es mayor que 3,
iniciaré el flujo inmediato.
De lo contrario, usaré el flujo flexible.
Y aquí, el número 3
es completamente arbitrario para mi app.
Por lo tanto, pueden modificar este valor

Indonesian: 
tergantung pada keperluan Anda.
Ini adalah keputusan struktur
disederhanakan
dan saya gunakan sinyal
sebagai sinyal tunggal.
Tapi Anda bisa menggunakan
kombinasi dengan sinyal lain
yang kita sediakan atau telah Anda miliki
sebagai kemungkinan
pilihan terbaik di kasus ini.
Mari lanjut ke sinyal kedua,
yaitu ketidakrelevanan aplikasi.
Jadi ketidakrelevanan aplikasi 
memberi tahu Anda seberapa lama
perangkat mendeteksi update
yang tersedia untuk pengguna.
Pada dasarnya, jika pengguna
telah memiliki aplikasi,
dan telah usang untuk 
jangka waktu yang lama,
ketidakrelevanan akan jadi lebih tinggi.
Dan mungkin, pengguna harus
melakukan upaya lebih besar untuk update.
Ini adalah contoh cara
saya menggunakannya.
Jadi di sini, yang saya lakukan adalah
jika ketidakrelevanannya
lebih besar dari 90 hari, saya akan 
memicu Immediate flow.
Jika ini berada
di antara 30 sampai 90 hari,
saya akan memicu
Flexible flow.
Dan satu hal implisit yang saya ingin
sebutkan di sini adalah bahwa

English: 
depending on your needs.
And this is a very
simplified decision
tree, where I'm using that
signal as a single signal.
But you can imagine to use it in
combination with other signals
that we provide or
that you already
have to make the best decision
possible in this case.
Let's move on to the second
signal, which is the app
staleness.
So app staleness
tells you how long
the device has known
about an update
being available for the user.
So essentially, if your
user has had the app,
and he has been out-of-date
for a longer time,
the staleness will be higher.
And so probably, that user will
need to update it more eagerly.
And here is an example
of how I'm using that.
So here, what I'm doing
is if the staleness
is bigger than 90 days, then I'm
triggering the Immediate flow.
If it's between 30
and 90 days, then I'm
triggering the Flexible flow.
And something that is implicit
in here that I want to call out

Japanese: 
必要に応じて
この値は微調整できます
これは
とてもシンプルな決定木です
シグナルを単一のシグナルとして
使っています
もちろんpriorityを使う、使わない
他のシグナルを併用するなど
いろいろなケースが想定できます
次は２つ目のシグナル
アプリの陳腐化（staleness）です
アップデートの提供開始が
デバイスに通知されてからの
経過時間のことです
つまり ユーザーが
アプリを使っていて
長い間それを
アップデートしていなければ
陳腐化の度合いが
高いということです
ユーザーはもっときちんと
アップデートする必要があります
こちらは活用方法の一例です
ここではstalenessが
90日を超える場合
Immediate flowを
トリガーします
30～90日の場合
Flexible flowをトリガーします

Spanish: 
en función de sus necesidades.
Este es un árbol de decisiones
muy simplificado,
en el que usaré ese indicador
como único indicador.
Sin embargo, pueden combinarlo
con otros indicadores
que proporcionamos o que ya tienen
para tomar la mejor decisión en cada caso.
Sigamos con el segundo indicador:
el estado de desactualización de la app.
Este indica cuánto tiempo
hace que el dispositivo sabe
que hay actualización
disponible para el usuario.
En esencia, si el usuario tiene la app,
pero hace mucho que no la actualiza,
el estado de desactualización será mayor,
por lo que deberá estar más dispuesto
a recibir la actualización.
Aquí les mostraré cómo usarlo.
Si el estado de desactualización
es mayor que 90 días,
iniciaré el flujo automático.
Si es de entre 30 y 90 días,
iniciaré el flujo flexible.
Algo que está implícito aquí
y que quiero llamar

Portuguese: 
como precisar.
E essa é uma árvore de decisão
muito simplificada
em que estou usando esse
sinal como o único.
Mas você pode usá-lo em
combinação com outros sinais
que oferecemos ou
que você já tenha
para tomar a melhor
decisão nesse caso.
Vamos para o segundo sinal,
que é a inatividade do app.
A inatividade do app
diz quanto tempo
o dispositivo sabe
que a atualização
está disponível para o usuário.
Basicamente,
se o usuário tiver o app,
e ele estiver desatualizado
por muito tempo,
a inatividade será mais alta.
E é possível que esse usuário
precise atualizar com mais urgência.
E aqui temos um exemplo
de como usar isso.
Aqui estou fazendo assim,
se a inatividade
for maior que 90 dias,
aciono o fluxo imediato.
Se estiver entre 30 e 90 dias,
aciono o fluxo flexível.
E algo que está implícito
aqui que quero destacar

Korean: 
필요에 따라 적용할 수 있습니다
이는 굉장히 단순화된 결정 트리인데요
여기서는 이 신호를 단일 신호로 사용했지만
여러분은 다른 신호와 조합해
사용하는 경우도 생각할 수 있습니다
저희가 제공하는 신호 아니면
여러분이 이미 가지고 있는 신호를 가지고
이 경우에 적합한
최선의 결정을 내리면 되는 것이죠
이제 두 번째 신호인
바로 앱 비활성 정도를 살펴보죠
앱 비활성 정도는
기기가 업데이트 가능 여부를
얼마나 오랫동안 알고 있었는지 말해줍니다
만약 사용자가 이 앱을 보유하고 있었고
오랜 시간 동안 업데이트를 하지 않았다면
비활성 정도는 높을 겁니다
이 경우 사용자는
좀 더 업데이트를 하고 싶어하겠죠
제가 이를 어떻게 이용할 수 있는지
보여드리겠습니다
여기서 저는 비활성 정도가
90일보다 크다면
즉시 업데이트를 트리거할 것입니다
비활성 정도가 30일에서 90일 사이라면
유연한 업데이트를 트리거할 것입니다
여기서 알 수 있는 것은

Chinese: 
定制和调整这个值
这个决策过程非常简单
我使用优先级作为唯一指标
但是可以想到，我们还可以结合
我们提供的或您现有的其他指标
尽可能做出最佳决策
我们接着讲第二个指标
应用陈旧程度
这个指标表示设备获知
有更新可供用户使用
已有多久
如果用户安装了应用
但是很长时间没有进行更新
应用陈旧程度就会很高
很可能该用户会更加急迫地需要更新
下面是我使用这个指标的一个例子
在这里我定义，如果陈旧程度
大于90天，就触发即时流程
如果介于30至90天之间
就触发灵活流程
我想指出的是，这里有一个隐性定义

English: 
is that if the app
is fresher than 30--
well, if it's less
stale than 30 days,
then I'm not triggering
an in-app update at all.
So this is also a very
important decision to make,
like when to decide to
trigger the update at all,
because sometimes you
don't want to notify
your users unnecessarily
if the app is already
fresh enough, right?
And now let's move on.
And let's assume that you have
triggered the Flexible flow.
You have triggered
the Flexible flow,
and the user has
decided to consent.
So the update is started.
And the user most likely
will stay in the app
as the update is downloading.
But at the same
time, the user might
want to know how
the update is going,
how the download is going.
And they might want to
do it without having
to get out of the app because
that's the whole point.
So to enable such a more
immersive experience
so that the user
stays in the app,
we are going to expose a couple
of new bits of information

Japanese: 
ここで暗黙の了解と
なっているのは
アプリが30日以内に
アップデートされている場合は
アプリ内アップデートを
トリガーしません
アップデートをトリガーする
タイミングなども
非常に重要な決定事項です
アプリが既に最新の場合は
ユーザーに通知を送っても邪魔になります
では次に行きましょう
Flexible flowをトリガーしたと
仮定します
トリガー後 ユーザーが同意し
アップデートが始まります
アップデートのダウンロード中
ユーザーは
大抵アプリにとどまります
その時 彼らはアップデートや
ダウンロードの進捗度を
知りたいかもしれません
もちろん ユーザーは
アプリを離れることなく
それを知りたいと思うでしょう
そこで より没入感のある体験を実現し
ユーザーをアプリに引き留めるには
いくつかの新しい情報を
ユーザーに表示します

Korean: 
앱 업데이트가
30일이 지나지 않은 상태라면
즉, 앱의 비활성 정도가
30일 이하인 경우라면
저는 인앱 업데이트를
아예 트리거하지 않을 거라는 거죠
이는 아주 중요한 결정입니다
업데이트를 트리거할지,
언제 트리거할지 결정하는 것 말이죠
왜냐면 여러분은 사용자에게
앱이 이미 충분히 최신 상태라는 것을
굳이 알리고 싶지 않을 테니까요
그렇죠?
이제 다음으로 넘어가 보겠습니다
여러분이 유연한 업데이트를
트리거했다고 가정해 보죠
여러분은 유연한 업데이트를
지금 막 트리거했습니다
그리고 사용자는 이를 수락하기로 했습니다
그러면 업데이트가 시작되죠
업데이트가 다운로드될 동안
사용자는 해당 앱에 머물 가능성이 높아요
하지만 동시에 사용자가
업데이트 진행 상황이나
다운로드 상황 등을
알고 싶어 할 수 있습니다
다시 말해 사용자는 앱을 나가지 않고도
말씀드린 정보를
알고 싶어 할 수 있는 거죠
이게 바로 핵심인데요
즉, 더욱 몰입도 높은 사용 환경을
가능하게 하려면
사용자가 앱을 계속 사용하면서도
새로운 정보를 알 수 있도록
정보를 조금씩 노출해야 한다는 것입니다

Chinese: 
如果应用是在30天内安装的
即陈旧程度低于30天
则根本不会触发应用内更新
这也是一个非常重要的决定
就像决定何时触发更新一样重要
因为有时候如果应用已经很新了
就没有必要通知用户更新
对不对？
接着往下讲
假设您已经
触发了灵活流程
而且用户决定同意更新
更新就会启动
下载更新时，用户很可能会
留在应用中
与此同时，用户还可能
想要了解更新进度如何
下载情况如何
而且，他们可能希望无需离开应用
就能了解这些情况
因为使用应用才是最重要的
为了实现这种更加深入的沉浸式体验
使用户可以留在应用中
我们准备在应用下载更新时

Spanish: 
es que, si el estado de desactualización
de la app es menor que 30 días,
no iniciaré la actualización.
La decisión que deben tomar
sobre cuándo iniciar la actualización
es muy importante
porque, a veces, no quieren
notificar innecesariamente a los usuarios
que la app ya está actualizada, ¿verdad?
Muy bien, sigamos.
Ahora, asumiremos
que iniciamos el flujo flexible.
Lo iniciamos
y el usuario otorgó consentimiento.
Entonces, comenzó la actualización.
Es probable que el usuario
siga usando la app
mientras se descarga la actualización.
Pero también es posible que quiera saber
el progreso de la descarga.
Y tal vez quiera verlo
sin tener que salir de la app,
ya que eso es lo que se espera.
Entonces, para habilitar
esa experiencia envolvente
que le permita al usuario
quedarse en la app,
expondremos cierta información nueva
durante la descarga,

Portuguese: 
é que se o app
for mais atual que 30...
se estiver desatualizado
menos que 30 dias,
não aciono
nenhuma atualização no app.
Essa decisão também é muito importante
Quando a atualização será acionada
para que você não notifique
os usuários sem precisar
se o app estiver
atual o suficiente, certo?
Vamos continuar.
E vamos supor que você
acionou o fluxo flexível.
Você acionou
o fluxo flexível,
e o usuário decidiu
permitir.
Então a atualização começa.
E o usuário pode permanecer
no app
durante o download da
atualização.
Mas o usuário também pode
checar o andamento
da atualização,
o andamento do download.
E espera fazer isso
sem ter que
sair do app porque
é esse o ponto.
Então para uma experiência
muito mais imersiva
em que o usuário
fique no app,
vamos mostrar um pouco de
informações novas

Indonesian: 
jika ketidakrelevanan 
kurang dari 30 hari,
saya tidak akan memicu
update dalam aplikasi sama sekali.
Jadi ini juga adalah keputusan
sangat penting yang harus dibuat,
seperti saat memutuskan 
untuk memicu update keseluruhan,
karena terkadang Anda tak ingin 
memberi notifikasi yang tidak diperlukan
pada pengguna Anda 
jika aplikasi sudah cukup baru, bukan?
Mari lanjutkan pembahasan.
Anggaplah Anda telah memicu
Flexible flow.
Anda telah memicu Flexible flow,
dan pengguna telah menyetujuinya.
Sehingga update akan dimulai.
Dan pengguna kemungkinan besar
akan tetap di aplikasi
saat update sedang didonwload.
Tapi pada saat yang sama,
pengguna mungkin
ingin mengetahui cara update
dan download
yang sedang berlangsung.
Dan mereka mungkin ingin
melakukannya tanpa keluar aplikasi
karena itulah tujuannya.
Jadi untuk mengaktifkan pengalaman
yang lebih imersif
sehingga pengguna
tetap berada di aplikasi,
kita akan mulai memaparkan
beberapa informasi baru

Chinese: 
提供更多新信息
例如当前已经下载的字节数
以及需要为更新
下载的总字节数
这可以实现什么功能？
大家看看屏幕右侧
这是我的演示应用，它正在利用灵活流程
执行应用内更新
可以看到在底部，我的应用
显示了一个进度条
实时展示我的更新状态
这样用户就可以实时查看
下载进度
在屏幕左侧
可以看到如何在代码中实现此功能
在这里，我在API中注册了一个监听器
用于在更新过程中接收进度信息
监听器中的操作非常简单
每当通过InstalStatus.DOWNLOADING
收到更新和进度状态时
就用最新的bytesDownloaded值和ToDownload值
更新我的UI
所有这些功能，包括更新优先级

Indonesian: 
saat aplikasi sedang didownload,
seperti jumlah byte
yang telah kita download
dan jumlah byte keseluruhan
yang akan perlu kita download
untuk update.
Apa gunanya ini?
Jika anda perhatikan bagian kanan layar,
ada demo aplikasi saya,
dan update dalam aplikasi
sedang dalam progres Flexible flow.
Dan Anda lihat di bagian bawah,
aplikasi saya menunjukkan status progres
yang sedang saya update real-time
sehingga pengguna real time dapat
melihat cara download berlangsung.
Dan di bagian kiri layar,
Anda dapat melihat
cara menyelesaikannya dalam kode.
Jadi di sini, saya menggunakan pemroses
yang saya daftarkan di API
untuk menerima progres
sementara update sedang berlangsung.
Dan yang saya lakukan
di pemroses cukup sederhana.
Jadi kapan pun saya menerima update 
dan keadaan progres
dengan InstalStatus.DOWNLOADING,
lalu saya akan mengupdate UI saya dengan 
nilai terakhir bytesDownloaded
ke dalam download.
Semua fitur ini
adalah prioritas update,

English: 
as the app is downloading, which
is like the amount of bytes
we have downloaded so far
and the total amount of bytes
that we will need to
download for the update.
What does this enable?
So if you look at the
right-hand side of the screen,
there is my demo app,
where an in-app update
is in progress Flexible flow.
And you see there at
the bottom, my app
is showing a progress bar that
I'm updating in real time,
so that the user
in real time can
see how the download is going.
And on the left-hand
side of the screen,
you can see how that
is done in code.
So here, I'm using a listener
that I register in the API
to receive progress while
the update is happening.
And what I'm doing in the
listener is pretty simple.
So whenever I receive an
update and a progress state
with InstalStatus.DOWNLOADING,
then I'm
updating my UI with the latest
values of bytesDownloaded
into downloads.
And all these features--
the update priority,

Korean: 
앱이 다운로드되는 동안 말이죠
지금까지 몇 바이트를 다운로드했는지
다운로드 전체 크기는 얼마나 되는지 등이
그러한 정보라고 할 수 있습니다
이를 통해 어떤 일이 가능해질까요?
지금 오른쪽 화면을 보시면
제 데모 앱이 있고 인앱 업데이트가
유연한 업데이트를 진행 중인 상황입니다
앱의 맨 아랫부분을 보시면
업데이트 진행 상황을
실시간으로 알려주는 바가 있어요
따라서 사용자는 실시간으로
다운로드 상황을 알 수 있죠
화면 왼쪽을 보시면
코드에서 이것이
어떻게 진행되는지 알 수 있습니다
여기서 저는 API에 등록한 리스너를
사용하고 있는데요
이를 통해 업데이트 중 진행 상황을
수신받을 수 있습니다
리스너 사용 방식은 아주 단순합니다
InstalStatus.DOWNLOADING을 통해
업데이트나 진행 상황에 관한
정보를 수신합니다
그리고 나서 제 UI를
다운로드에 들어가는
bytesDownloaded의
최신 값으로 업데이트하죠
이런 모든 기능, 즉 업데이트 우선순위

Spanish: 
por ejemplo, la cantidad
de bytes descargados
y la cantidad de bytes
necesarios para completarla.
¿Qué debemos habilitar?
En el lado derecho de la pantalla,
verán mi app de demostración,
en la que hay una actualización integrada
en curso con el flujo flexible.
Y pueden ver en la parte inferior
que mi app muestra una barra de progreso
de una actualización en tiempo real
para que el usuario pueda ver
también en tiempo real
cómo va la actualización.
Y en la parte izquierda de la pantalla,
pueden ver cómo se hace en código.
Aquí, uso un objeto de escucha
que registré en la API
para recibir el progreso
mientras se aplica la actualización.
Lo que hago en el objeto de escucha
es bastante simple.
Cuando recibo una actualización
y un estado de progreso
con InstallStatus.DOWNLOADING,
actualizo mi IU de descargas con el valor
más reciente de bytesDownloaded.
Y todas estas funciones:
la prioridad de las actualizaciones,

Portuguese: 
durante o download,
como a quantidade de bytes
baixados até o momento
e o total de bytes
necessário para
o download da atualização.
O que isso permite?
Se você olhar para
o canto direito da tela,
temos meu app demo,
em que uma atualização no app
está em andamento no
fluxo flexível.
E na parte inferior,
meu app
está mostrando uma barra de progresso
que atualizo em tempo real
para o usuário veja em tempo real
o andamento do download.
E no canto esquerdo
da tela,
você pode ver como
isso é feito no código.
Aqui estou usando um listener
que registro na API
para receber o progresso
durante a atualização.
E o que faço no
listener é bem simples
Sempre que receber uma
atualização e um estado de progresso
com InstalStatus.DOWNLOADING,
então vou atualizando minha IU
com os valores mais recentes
de bytesDownloaded nos downloads.
E todos esses recursos...
a prioridade da atualização

Japanese: 
アプリが今まで
何MBダウンロードしたか
合計何MBの
ダウンロードが必要か
といった情報です
スクリーンの右側にあるのは
アプリのデモです
アプリ内アップデートが
Flexible flowで進行中です
下のバーアップデート状況を
リアルタイムで表示します
ユーザーはダウンロードの進捗を
リアルタイムで把握できます
スクリーン左は
それを記述したコードです
ここではAPIに登録した
リスナーを使って
アップデートの進捗状況を
受け取っています
リスナーでやっていることは
とてもシンプルです
InstalStatus.DOWNLOADINGで
アップデートと
進行状況を受け取っています
bytesDownloadedの最新の値で
UIを更新しています
アップデート優先度や
アプリの陳腐化

Korean: 
앱 비활성 정도와
업데이트 진행 상황에 대한
더욱 자세한 정보는
곧 공개될 예정입니다
이 사양을 처음으로 실행해보고 싶은 분은
저희에게 말씀해주세요
이상으로 다시 마이크를 피에트로에게 넘겨
Play 코어 Kotlin 확장에 대해
말씀드리도록 하겠습니다
고맙습니다
샌드박스를 통해 질문을 해주세요
인앱 업데이트 API에 들어갈
흥미로운 새 기능들을 살펴봤는데요
Play 코어는 여러분이
자바와 Kotlin에서
사용할 수 있습니다
Android는 이제
'Kotlin 우선' 플랫폼입니다
오늘 오전 세션에서
Play Core KTX의
Dynamic Delivery에 대해
이미 말씀드린 바 있는데요
Play Core KTX는
인앱 업데이트 또한 지원합니다
따라서 Play Core KTX는
Kotlin을 지원하는
직관적인 API입니다
저희는 Kotlin의 새로운
기능을 활용하고 있습니다

Japanese: 
アップデートに関する
より詳細な情報といった
新しい機能は
まもなく公開されます
いち早く試したいという方は
ぜひ私たちにお知らせください
それでは再びピエトロが
Play CoreのKotlin拡張について
お話しします
ありがとう
ぜひSandboxで
フィードバックをお聞かせください
アプリ内アップデートAPIで
提供される
エキサイティングな
新機能を見てきました
一方 Play Coreは
JavaやKotlinで使えます
Androidは今や“Kotlinファースト”の
プラットフォームです
今朝のセッションでは
Play Core KTXでの動的配信が
発表されました
アプリ内アップデートを
サポートするPlay Core KTXは
Kotlinでも良く使われるAPIです
私たちはKotlinの新機能を活用し

Spanish: 
el estado de desactualización
y la información detallada del progreso
se lanzarán muy pronto.
Comuníquense con nosotros
si quieren ser los primeros en probarlas.
Así, le devuelvo la palabra a Pietro,
que les hablará sobre
la extensión Play Core Kotlin.
Gracias, Alessandro.
Pueden venir a preguntarnos
en la zona de pruebas.
Ya vimos las nuevas e increíbles funciones
que llegarán en la API
de actualizaciones integradas en la app.
Pero Play Core es algo
que pueden usar en Java y Kotlin.
Y Android es ahora
una plataforma "Kotlin primero",
por lo que ya anunciamos Play Core KTX
hoy a la mañana
en una charla sobre publicación dinámica.
Play Core KTX también admite
actualizaciones integradas en la app.
Play Core KTX es una API idiomática
que admite Kotlin.
También implementamos
algunas funciones de Kotlin.

English: 
the app staleness, and the more
fine-grained information about
the progress of an update--
are going to be
rolled out very soon.
So please come and
talk to us if you
would like to be the first
ones to try them out.
And with this,
I'm giving it back
to Pietro, who's talking to
you about the Play Core Kotlin
extension.
PIETRO MAGGI: Thank
you, Alessandro.
So come and ask
us in the Sandbox.
We have seen these
exciting new features
that are coming in
in-app updates API.
But Play Core is
something that you
can use in Java and in Kotlin.
And Android now is a
"Kotlin first" platform.
So we already announced it
today in this morning talk
on dynamic delivery
about the play Core KTX.
But the Play Core KTX
supports also in-app updates.
So the Play Core KTX is
an [? idiomatic ?] API
that support Kotlin.
And we are leveraging a
few features of Kotlin.

Portuguese: 
a inatividade do app e as informações
mais refinadas sobre
o progresso da atualização
serão lançados em breve.
Então,
fale conosco
se quiser estar entre os
primeiros a testá-los.
Com isso,
retorno para
Pietro que vai falar sobre a 
extensão Play Core Kotlin.
Obrigado,
Alessandro.
Convidamos vocês para 
fazer perguntas no Sandbox.
Vimos esses novos
e interessantes recursos
que chegarão em breve para
API de atualizações no app.
Mas o Play Core é
algo que você
pode usar no Java e no Kotlin.
E o Android é agora uma
plataforma que prioriza Kotlin.
Como anunciamos hoje
na palestra da manhã
sobre entrega dinâmica
e o Play Core KTX.
O Play Core KTX também
é compatível com atualizações no app.
Então o Play Core KTX é
uma API idiomática
compatível com Kotlin.
E estamos usando alguns
recursos do Kotlin.

Indonesian: 
ketidakrelevanan aplikasi,
dan informasi lebih terperinci
tentang progres update
yang akan segera diluncurkan.
Silakan datang dan 
bercakap dengan kami
jika Anda ingin menjadi
orang pertama yang mencobanya.
Saya akan kembalikan ke Pietro,
yang akan membahas
ekstensi Play Core Kotlin.
-Terima kasih, Alessandro.
Jadi datanglah dan tanya kami di Sandbox.
Kami telah melihat fitur 
baru menarik ini
yang akan datang
di update dalam aplikasi API.
Tetapi, Play Core dapat digunakan
di Java maupun Kotlin.
Dan sekarang Android adalah
platform "yang mengutamakan Kotlin".
Jadi sudah kami sampaikan
di pembahasan hari ini
tentang pengiriman dinamis 
dan Play Core KTX.
Tetapi, Play Core KTX juga mendukung 
update dalam aplikasi.
Jadi Play Core KTX adalah
API [? idiomatic ?]
yang mendukung Kotlin.
Dan kami memanfaatkan
beberapa fitur Kotlin.

Chinese: 
应用陈旧程度以及更加详细的
更新进度信息
都会很快推出
如果想要率先尝试
请与我们联系
接下来交给Pietro
他将介绍Play Core Kotlin
扩展
谢谢，Alessandro
请前往Sandbox与我们交流
我们了解了In-app Updates API
即将推出的令人振奋的新功能
而Play Core是可以用于
Java和Kotlin的扩展
Android现已成为“Kotlin优先”的平台
今天早上
在关于Dynamic Delivery会议中
我们已经公布了这个扩展
但是Play Core KTX也支持应用内更新
Play Core KTX是一个支持Kotlin的
惯用API
我们利用Kotlin的一些功能

English: 
The idea is that we want to
simplify the API surface.
And we want to be
opinionated on how
to use the in-app updates API.
So we want to drive the
developers to use it
in the right way.
And we want to leverage
all the power of Kotlin
with coroutines and flow.
So to get an example,
it's much simpler,
the in-app update flow,
then the dynamic delivery.
There are less status here,
But it's the same concept.
So you can register for a flow
and collect the events coming
from the underlying
Play Core API
so you can know when
the update is available,
it is in progress,
and it's downloaded.
The other thing is
that using coroutines,
it's much easier to end all the
cancelation and the cleanup.
In this simple, I'm
using a viewModelScope.
But the idea is that
you can attach this flow

Indonesian: 
Intinya adalah bahwa kami ingin
menyederhanakan tampilan API.
Dan kami ingin berpendapat
tentang cara menggunakan 
update dalam aplikasi API.
Jadi kami ingin mengarahkan developer
untuk menggunakannya
dengan cara yang benar.
Dan kami ingin memanfaatkan 
semua daya Kotlin
dengan coroutine dan flow.
Jadi sebagai contoh,
ini akan jauh lebih mudah,
alur update dalam aplikasi, lalu
pengiriman dinamis.
Ada sedikit status di sini, 
tetapi dengan konsep yang sama.
Jadi Anda dapat mendaftar untuk alur
dan mengumpulkan
peristiwa yang akan datang
dari Play Core API yang mendasari
sehingga Anda bisa tahu 
saat update tersedia, dan terdownload.
Selain itu dengan coroutine,
jauh lebih mudah untuk mengakhiri
semua pembatalan dan pembersihan.
Di contoh ini, saya menggunakan 
viewModelScope.
Tetapi intinya adalah
Anda dapat menetapkan alur ini

Portuguese: 
A ideia é simplificar
a superfície da API.
E queremos ser assertivos
sobre como usar
a API de atualizações no app.
Para orientar os
desenvolvedores a usá-la
corretamente.
E queremos usar
todo o poder do Kotlin
com corrotinas e fluxo.
Por exemplo,
é bem mais simples
o fluxo de atualização no app
que a entrega dinâmica.
Há menos status aqui.
Mas é o mesmo conceito.
Você pode registrar em um fluxo
e coletar os eventos que vêm
da API Play Core
subjacente
para saber quando
a atualização está disponível,
em andamento
e o download concluído.
Outra coisa é
que usando corrotinas
é bem mais fácil finalizar todo
cancelamento e a limpeza.
Nessa amostra,
estou usando um viewModelScope.
Mas a ideia é que
você possa anexar esse fluxo

Spanish: 
La idea es simplificar
la superficie de la API.
Queremos recibir opiniones
sobre cómo usan la API
de actualizaciones integradas en la app.
Por ello, queremos
animar a los desarrolladores
a usarla de manera correcta.
Y queremos adoptar la tecnología de Kotlin
con corrutinas y flujos.
Por ejemplo, es mucho más simple
el flujo de actualización integrada
en la app que el de publicación dinámica.
Tiene menos estados,
pero el concepto es el mismo.
Pueden registrar un flujo
y recopilar los eventos
que vienen de la API
de Play Core subyacente
para saber cuándo está
disponible la actualización,
si está en curso y si ya se descargó.
Por otro lado, usando corrutinas
es más fácil finalizar
la cancelación y la limpieza.
En este ejemplo, uso un viewModelScope.
Pero la idea es que adjunten este flujo

Chinese: 
目的是简化API界面
我们想贯彻
In-app Updates API的使用方法
推动开发者以正确的方式
使用它
我们想将Kotlin的所有优势
与协程和流程相结合
举个例子，它可以简化
应用内更新流程以及Dynamic Delivery
状态更少但理念相同
您可以注册某个流程
从底层Play Core API收集事件
这样您就会知道何时有更新可用
更新进度和下载状态如何
另一方面，使用协程
更便于完成各种取消和清理任务
在这个示例中
我使用了viewModelScope
具体方法是将这个flow添加到

Japanese: 
APIサーフェスをシンプルに
したいと考えています
また アプリ内アップデートAPIの
使い方について
ガイドを提供していきます
開発者の方々には
正しく使って欲しいからです
そして コルーチンとフローにより
Kotlinをフル活用する狙いもあります
例えばフローでは
アプリ内アップデートフローや
動的配信が
ずっと簡素化されます
画面の例では ステータスが少ないですが
コンセプトは同じです
フローに登録して
基盤となるPlay Core APIからの
イベントを収集すると
アップデートが
利用可能になった時や
進行中またはダウンロード中など
状況を検知できます
もうひとつはコルーチンを
使うことです
キャンセルやクリーンアップが
ずっと簡単に完了します
この簡単な例では
viewModelScopeを使っています

Korean: 
API 공개 부분을 단순화하려는 
생각으로 출발했죠
저희는 독자적으로 인앱 업데이트 API
사용법을 보유하고자 합니다
개발자가 인앱 업데이트 API를
올바른 방식으로 사용할 수 있도록 말이죠
저희는 또한 동시 실행 루틴과
절차를 바탕으로
Kotlin의 모든 역량을
활용하고자 합니다
예를 들어, 이는 훨씬 간단한 예인데요
바로 인앱 업데이트 절차와
Dynamic Delivery입니다
상태는 더 적지만 개념은 같죠
여기서 여러분은 절차를 등록하고
바탕의 Play Core API에서
비롯되는 이벤트를 수집합니다
또한 업데이트가 언제
가능한지 알 수 있죠
업데이트 상황이나
다운로드 상태도 말입니다
동시 실행 루틴을
사용할 때의 또 다른 이점은
취소나 정리 같은 모든 동작을
더욱더 쉽게 끝낼 수 있다는 점이에요
제가 사용하는
viewModelScope에서 말이죠
여기서 중요한 것은 이 절차를
여러분의 동시 실행 루틴의 범위에

English: 
to your own coroutine
scopes and link this
to the lifecycle of your
application or the UI
that you want to use there.
And the last thing is that for
developers that are not yet
comfortable using Kotlin flow
or they cannot use experimental
Kotlin features, we are
exposing a couple of suspended
functions, so coroutines,
where you can request
the AppUpdateInfo.
And you can request that
when the update is complete.
And this allows you to simplify
a lot the usage of the Play
Core API, avoiding the use of
the task returned by the Play
Core API.
This library is
already available.
So we are really
open to get feedback.
It's fully functional.
We are implementing most of
the features of Play Core.
And if you want to know more
about the Play Core KTX,
I suggest you take a
look at the recording
of the video of the
session of this morning

Indonesian: 
ke lingkup coroutine 
milik Anda sendiri dan menautkannya
ke siklus proses aplikasi atau UI Anda
yang ingin Anda gunakan di sana.
Dan yang terakhir adalah untuk developer
yang belum merasa nyaman
menggunakan Kotlin flow
atau tidak dapat menggunakan
fitur Kotlin eksperimental,
kami akan memaparkan
beberapa fungsi yang ditangguhkan,
jadi coroutine, yakni
tempat Anda dapat meminta AppUpdateInfo.
Dan Anda dapat memintanya
saat update selesai.
Dan ini mengizinkan Anda untuk
menyederhanakan banyak penggunaan
Play Core API, menghindari penggunaan
tugas yang dikembalikan
oleh Play Core API.
Library ini telah tersedia.
Jadi kami sangat terbuka untuk
menerima masukan.
Ini sepenuhnya berfungsi.
Kami mengimplementasikan
banyak fitur Play Core.
Dan jika Anda ingin tahu lebih lanjut
tentang Play Core KTX,
saya sarankan untuk melihat
rekaman video sesi pagi ini

Korean: 
가져다 붙일 수 있다는 것입니다
그리고 이를 다시
여러분이 사용하고자 하는
앱이나 UI의 수명 주기에
연결할 수 있습니다
마지막으로 Kotlin 절차 사용에
아직 익숙하지 않은 개발자분과
Kotlin의 실험적인 기능을
사용하지 못하는 개발자분을 위해
몇몇 기능을 공개하려 합니다
AppUpdateInfo를 요청할 수 있는
동시 실행 루틴도 살펴보고요
업데이트가 완료될 때
이것을 요청할 수 있습니다
이 경우 Play Core API의
사용을 굉장히 단순화할 수 있죠
Play Core API에 의해 반환된
작업의 사용을 피할 수 있기 때문입니다
이 라이브러리는 이미 사용 가능합니다
저희는 모든 의견을
적극적으로 받고자 합니다
이것은 완전히 제대로 작동합니다
저희는 Play Core의 대부분 기능을
구현하고 있습니다
Play Core KTX에 대해
좀 더 알고 싶으시다면
Dynamic Delivery에 관한
오전 세션 녹화영상을
한번 보시기를 권해 드립니다

Japanese: 
このフローをコルーチンの
スコープにアタッチし
これをアプリのライフサイクル
またはそこで使用するUIに
リンクするという考え方です
最後に Kotlinのフローを
使い慣れていない開発者や
実験的なKotlinの機能を
使えない方のために
保留になっていた機能を
いくつか公開します
AppUpdateInfoをリクエストできる
コルーチンなどです
アップデートが完了すると
リクエストできます
これによりPlay Core APIが
簡単に使えるようになり
Play Core APIによって返される
タスクの使用を回避できます
このライブラリは既に
利用可能です
皆さんのフィードバックを
お待ちしています
完全に機能しています
Play Coreのほとんどの機能は
実装中です
Play Core KTXについて
詳しく知りたい方は
今朝行われた動的配信セッションの
動画をご覧ください

Chinese: 
协程作用域中，并将它
与应用的生命周期或您要使用的UI
关联起来
最后，如果开发者
还不习惯使用Kotlin流程，或者无法使用
实验性的Kotlin功能
我们会推出一些挂起函数
这样在协程中您就可以请求获得
AppUpdateInfo
并请求在更新完成时获得此信息
这就可以简化
Play Core API的很多使用情况
避免使用Play Core API返回的
任务
这个库现在已经上线
我们非常希望获得大家的反馈
它现在完全可以使用
我们实现了Play Core的大多数功能
如果您想进一步了解Play Core KTX
建议观看今天早上
Dynamic Delivery会议的视频录播

Spanish: 
al alcance de su propia corrutina
y lo vinculen al ciclo de vida
de su aplicación o la IU
que quieran implementar allí.
Lo último es para los desarrolladores
que todavía no se sienten cómodos
con el flujo de Kotlin o no pueden usar
las funciones experimentales de Kotlin.
Expusimos algunas funciones suspendidas,
corrutinas, en las que pueden
solicitar AppUpdateInfo.
Y pueden solicitarlo
cuando se complete la actualización.
De esta manera, podrán
simplificar gran parte del uso
de la API de Play Core y evitar
el uso de la tarea que mostrará
la API de Play Core.
Esta biblioteca ya está disponible,
por lo que estamos abiertos a comentarios.
Es completamente funcional.
Implementamos la mayoría
de las funciones de Play Core.
Para obtener
más información sobre Play Core KTX,
les sugiero ver la grabación
del video de la sesión de esta mañana

Portuguese: 
a seus próprios escopos
de corrotina e vinculá-lo
ao ciclo de vida do seu
app ou à IU
que você quer usar nele.
E a última coisa é para os
desenvolvedores que ainda não estão
confortáveis em usar o fluxo do Kotlin
ou não podem usar recursos
experimentais do Kotlin,
vamos mostrar funções suspensas
então corrotinas, em que você
pode solicitar a AppUpdateInfo.
E você pode solicitar isso quando
a atualização for concluída.
E isso permite que você simplifique
muito do uso da API Play Core
porque evita o uso da tarefa
retornada pela API Play Core
A biblioteca já está disponível.
Então estamos prontos
para receber feedback.
Está totalmente funcional.
Estamos implementando a maioria dos
recursos do Play Core.
E se você quiser saber mais
sobre o Play Core KTX,
sugiro que você veja
a gravação do vídeo
da sessão de hoje de manhã

Chinese: 
我的同事在当中
介绍了Play Core KTX
与Dynamic Delivery有关的方面
重申一下，这里只是
简要介绍了一下Play Core KTX
大家可以前往Sandbox，与我们交流
询问信息、下载库并开始测试
欢迎提供反馈
谢谢大家今天来到这里
请记得更新应用
[掌声]
[播放音乐]

English: 
on dynamic delivery,
where my colleagues
have introduced a part
of the Play Core KTX
covering the dynamic delivery.
So again, this is a very quick
overview of the Play Core KTX.
You can come to the
Sandbox, talk to us,
ask information, download the
library, and start to test it.
And please, provide feedback.
So thank you everybody
for coming today,
and update your app.
[APPLAUSE]
[MUSIC PLAYING]

Portuguese: 
sobre entrega dinâmica,
em que meus colegas
apresentaram uma parte
do Play Core KTX
que trata da entrega dinâmica.
Novamente, essa é uma visão geral
rápida do Play Core KTX.
Você pode falar conosco
no Sandbox
pedir informações, 
baixar a biblioteca e testá-la.
Por favor,
deixe seu feedback.
Obrigado a todos
pela presença hoje
e atualizem seus apps.
[APLAUSO]
[MÚSICA]

Korean: 
오전 세션에서 제 동료가
Play Core KTX의 일부를
소개했는데요
Dynamic Delivery에 관한
내용이었죠
지금까지 Play Core KTX에 대해
간략하게 말씀드렸는데요
샌드박스로 오셔서 저희와 얘기를 나누고
정보를 교환하고 라이브러리를 
다운로드, 실행, 테스트해 보실 수 있습니다
의견도 주시면 감사하겠습니다
오늘 이 자리에 와 주신
모든 여러분께 감사드리며
여러분의 앱을 업데이트하시기를 바랍니다
[박수]
[음악 재생]

Spanish: 
sobre publicación dinámica,
en la que uno de mis colegas
presentó una parte de Play Core KTX
sobre publicación dinámica.
Les reitero que este
es un breve resumen de Play Core KTX.
En la zona de pruebas,
pueden hablar con nosotros
pedir información,
descargar la biblioteca y hacer pruebas.
Esperamos sus comentarios.
Gracias a todos por venir.
Actualicen su app.

Japanese: 
ダイナミックデリバリーを
カバーする
Play Core KTXの一部が
紹介されています
Play Core KTXの概要を
簡単に紹介してきました
ぜひSandboxにて
フィードバックをお聞かせください
ライブラリをダウンロードして
テストを始めてください
そして
フィードバックもお願いします
今日はありがとうございました
アプリを
アップデートしてくださいね

Indonesian: 
tentang pengiriman dinamis,
dan di sana kolega saya
telah memperkenalkan
bagian Play Core KTX
yang mencakup pengiriman dinamis.
Sekali lagi, ini adalah ringkasan
yang sangat singkat tentang Play Core KTX.
Anda dapat mengunjungi Sandbox,
bercakap dengan kami,
bertanya informasi, mendownload library,
dan mulai mengujinya.
Dan silakan beri masukan.
Jadi, terima kasih semuanya 
telah hadir hari ini,
dan update aplikasi Anda.
