[go: up one dir, main page]

Notifikasi, yang merupakan pesan yang dikirim ke layar beranda perangkat seluler, adalah cara yang sangat bagus untuk membawa pengguna laten kembali ke aplikasi Anda. Namun bagaimana Anda berkomunikasi dengan pengguna setelah mereka kembali ke dalam aplikasi? Bagaimana Anda memastikan bahwa mereka berinteraksi dengan aplikasi menggunakan cara yang dimaksudkan, alih-alih membuka tutup layar tanpa melakukan tindakan yang signifikan? Bagaimana Anda memandu mereka melalui pengalaman aplikasi?
Untuk membantu Anda menjawab pertanyaan tersebut, hari ini kami meluncurkan Firebase In-App Messaging untuk membantu Anda memandu pengguna aplikasi yang aktif menggunakan aplikasi dengan mengirimkan pesan yang tertarget dan kontekstual kepada mereka. Sekarang, Anda bisa berkomunikasi dengan pengguna yang paling penting - pengguna yang sudah berinteraksi dengan aplikasi Anda - dan memperdalam interaksi mereka dengan menampilkan informasi, penawaran, dan tips yang relevan saat mereka menggunakan aplikasi Anda secara real-time!

Apa itu In-App Messaging?

Tujuan utama dari pesan yang dikirim dengan In-App Messaging adalah untuk "mendorong" pengguna aktif menuju tindakan dalam aplikasi utama (seperti berlangganan, menonton video, menyelesaikan level, atau membeli item). Pesan dalam aplikasi adalah cahaya pemandu dalam aplikasi yang dirancang untuk memacu konversi, meningkatkan waktu sesi, dan mendorong eksplorasi aplikasi. In-App Messaging merupakan komplemen penting bagi notifikasi yang dikirim melalui Firebase Cloud Messaging.

Bagian asli dari aplikasi Anda

Pesan dalam aplikasi muncul di dalam aplikasi, sehingga mereka seharusnya terasa seperti bagian alami dari pengalaman seluler Anda. Dengan In-App Messaging, Anda memiliki fleksibilitas dan kontrol untuk mengatur pesan dalam aplikasi di berbagai format (banner, modal, dan gambar) dan menyesuaikan tampilan serta nuansa mereka. Anda bisa mengubah skema warna agar sesuai dengan merk Anda, dan menambahkan elemen visual seperti gambar. Anda juga bisa menyesuaikan tombol call-to-action agar sesuai dengan penjelajahan pengguna aplikasi. Dan karena pemicu pesan berdasarkan event Analytics, bila Anda memperlengkapi aplikasi dengan event penting, merancang dan menguji pesan dalam aplikasi baru bisa dilakukan dengan mudah tanpa meluncurkan versi baru aplikasi.

Target berdasarkan perilaku dan data profil

Pesan dalam aplikasi paling efektif ketika mereka tertarget dengan baik dan tepat waktu. In-App Messaging berfungsi dengan Google Analytics for Firebase dan Firebase Predictions sehingga Anda bisa memicu pesan berdasarkan data profil pengguna (bahasa, versi aplikasi, negara), perilaku saat ini (pembelian, layar yang dikunjungi, tombol yang diklik), dan prediksi perilaku mendatang mereka (kemungkinan belanja, risiko churn).

Misalnya, dengan In-App Messaging dan Google Analytics for Firebase, Anda bisa mengirim pesan dalam aplikasi ke semua pemain yang menggunakan versi lawas game dan menawarkan hadiah jika mereka mengupgrade aplikasinya. Atau, Anda bisa mengirim pesan dalam aplikasi yang berisi tips tentang cara menamatkan level game ketika pengguna gagal menyelesaikannya.
Dengan In-App Messaging + Firebase Predictions, Anda bisa mengirim pesan dalam aplikasi yang berisi kode kupon kepada pengguna yang kemungkinan tidak berbelanja dalam aplikasi Anda untuk memikat mereka agar melakukan pembelian.

Melacak kesuksesan dengan mudah

In-App Messaging juga menunjukkan kepada Anda bagaimana masing-masing campaign in-app messaging bekerja. Secara khusus, ia melacak tayangan, klik, dan konversi berdasarkan tanggal sehingga Anda bisa mengetahui keberhasilan campaign dan membuat keputusan yang tepat apakah akan menjalankannya kembali atau tidak, atau mengubahnya, berdasarkan hasil tersebut.

Menjalankan berbagai campaign

Banyak developer yang familier dengan notifikasi, tetapi tidak yakin kapan harus menggunakan in-app messaging. Agar Anda semakin tertarik, berikut adalah beberapa contoh tipe campaign interaksi yang bisa Anda jalankan dengan In-App Messaging.
  • Berbasis hadiah. Ucapkan selamat kepada pengguna karena telah meraih prestasi (seperti mencapai sasaran kebugaran) atau menyelesaikan tindakan dalam aplikasi utama (seperti menamatkan level game) dengan hadiah, penawaran spesial, atau ucapan selamat.
  • Berbasis insentif. Dorong pengguna untuk menyelesaikan tindakan dalam aplikasi utama dengan memberikannya insentif ketika mereka masuk jalur konversi. Misalnya, Anda bisa memberikan kode diskon kepada pengguna atau pengiriman gratis saat mereka menambahkan item ke keranjang belanja mereka.
  • Fitur baru. Apakah Anda merilis fitur baru belum lama ini? Anda bisa menggunakan In-App Messaging untuk menyorotnya dan menunjukkan kepada pengguna cara menggunakannya.
  • Konten baru. Apakah Anda belum lama ini menambahkan konten baru ke aplikasi? Anda juga bisa menggunakan In-App Messaging untuk memandu pengguna mendengarkan, membaca, atau menontonnya.
  • Berbagi baru. Bila aplikasi Anda memiliki integrasi media sosial, pertimbangkan untuk meminta pengguna agar membagikan artikel yang mereka sukai, skor tertinggi, atau item yang mereka beli dengan pesan dalam aplikasi.
  • Tips aplikasi. Saat orang-orang berinteraksi dengan aplikasi Anda, tunjukkan kepada mereka cara memanfaatkannya semaksimal mungkin dengan tips pro. Misalnya, bila seorang pemain gagal melewati level game tertentu, Anda bisa menggunakan In-App Messaging untuk memberikan petunjuk cara menamatkannya di kesempatan berikutnya.
Skenario ini hanyalah puncak gunung es! Apakah Anda ingin membuat campaign berulang atau mengirim pemberitahuan satu kali, In-App Messaging mendukung berbagai kasus penggunaan.
Mulailah hari ini dengan memeriksa dokumentasi:
Memulai dengan Firebase In-App Messaging
Kami sangat menantikan tipe campaign in-app messaging yang Anda jalankan!

Di Firebase, misi kami adalah membantu tim aplikasi mobile agar berhasil, yang berarti memiliki kemampuan untuk mendukung perusahaan dan tim dari semua ukuran dan kompleksitas. Dalam beberapa tahun terakhir, kami telah jauh lebih matang, dari database realtime hingga platform pengembangan aplikasi seluler lengkap. Firebase di-build di atas Google Cloud, sehingga Anda mendapatkan semua skala teknis, manajemen dan kontrol akses tingkat-enterprise, dan kekuatan machine learning yang mendukung banyak produk Google. Hari ini, kami senang sekali bisa membagikan beberapa produk dan fitur baru yang akan membantu Anda mem-build aplikasi yang lebih baik, meningkatkan kualitas aplikasi, dan mengembangkan bisnis Anda.

Mengembangkan bisnis Anda

Firebase memiliki sejumlah produk untuk membantu Anda berinteraksi dengan pengguna dan mengembangkan bisnis, mulai dari penargetan yang didukung machine learning dengan Firebase Predictions, hingga optimalisasi aplikasi tanpa pemublikasian ulang melalui Remote Config, untuk mengajak kembali pengguna yang jarang aktif dengan Cloud Messaging. Hari ini kami menambahkan produk baru, Firebase In-App Messaging, untuk melengkapi fitur yang tersedia guna mengembangkan basis pengguna Anda, serta melakukan penyempurnaan untuk beberapa produk kami.

Memperkenalkan Firebase In App Messaging

Notifikasi adalah cara yang bagus untuk membawa pengguna kembali ke aplikasi Anda. Namun, bagaimana Anda memastikan pengguna berinteraksi dengan aplikasi Anda dengan cara yang diharapkan dan tepat, alih-alih membolak-balik layar tanpa melakukan aksi yang berarti? Bagaimana Anda memandu mereka melalui pengalaman aplikasi Anda?
Hari ini, kami meluncurkan Firebase In-App Messaging untuk membantu Anda memandu pengguna aplikasi yang secara aktif menggunakan aplikasi Anda dengan mengirimkan pesan tertarget dan kontekstual. Sekarang, Anda bisa berkomunikasi dengan pengguna yang paling penting - pengguna yang sudah berinteraksi dengan aplikasi Anda - dan memperdalam interaksi bersama mereka dengan menampilkan informasi, penawaran, dan tips yang relevan saat mereka menggunakan aplikasi Anda!

Pesan bisa disesuaikan dengan format, warna, dan CTA, sehingga Anda bisa menyelaraskan pesan dengan aplikasi Anda. In-App Messaging juga terintegrasi dengan Google Analytics for Firebase dan Firebase Predictions, mempermudah Anda dalam menargetkan pesan berdasarkan data profil pengguna seperti versi aplikasi, perilaku saat ini seperti klik tombol, atau perilaku selanjutnya yang diprediksi seperti risiko churn. In-App Messaging mulai diluncurkan hari ini; lihat dokumentasi kami untuk detail selengkapnya.

Pelaporan yang lebih baik untuk konsol FCM dan API


API dan konsol Firebase Cloud Messaging (FCM) memungkinkan Anda mengirim notifikasi dan pesan data ke pengguna di iOS, Android, dan web, tetapi memahami bagaimana notifikasi bekerja di semua platform yang berbeda bukanlah hal yang mudah. Dasbor pelaporan FCM baru memberikan tim tempat terpusat untuk melihat statistik perpesanan kunci seperti pengiriman, tayangan, dan terbuka, sehingga mereka bisa dengan mudah memahami bagaimana kinerja pesannya. Selain mengumpulkan semua statistik ini, dasbor pelaporan juga memberi Anda analisis tentang pengiriman API dari konsol, untuk pertama kalinya.
Developer bisa menggunakan informasi ini untuk memantau kesehatan fungsionalitas notifikasi mereka, seperti penurunan pengiriman setelah rilis update baru, serta menggunakan data pada notifikasi yang dikirim dan terbuka untuk meningkatkan strategi notifikasi, seperti memantau bagaimana judul dari sebuah notifikasi berdampak pada tingkat pembukaannya. Dasbor pelaporan FCM memungkinkan Anda memfilter pengiriman berdasarkan tanggal, platform (iOS atau Android), dan tipe (pesan data atau notifikasi), sehingga mempermudah Anda dalam menemukan data yang dicari.

Histori perubahan untuk Remote Config

Sebelumnya, bila Anda ingin memeriksa nilai Remote Config yang digunakan di masa lalu, Anda harus melacaknya secara manual. Dalam tim satu orang, ini merepotkan, tetapi untuk tim besar, ketika banyak developer yang berbeda dapat mengubah Remote Config project sekaligus, ini hampir tidak mungkin dilakukan.
Hari ini, dengan gembira kami umumkan bahwa kami menambahkan histori perubahan ke Remote Config. Firebase menyimpan 300 versi Remote Config project hingga 90 hari. Anda akan dapat melihat bagaimana parameter dan condition berubah seiring waktu dan jika Anda ingin kembali ke versi sebelumnya, yang harus Anda lakukan hanyalah mengklik tombol rollback.
Kami mulai meluncurkan histori perubahan untuk Remote Config hari ini dan akan sepenuhnya tersedia untuk semua project dalam beberapa hari mendatang. Klik di sini untuk melihat dokumentasi teknis.

Histori perubahan dalam Remote Config

Meningkatkan kualitas aplikasi

Ketika tim Fabric bergabung dengan Firebase tahun lalu, kami sangat bersemangat untuk belajar dari keahlian mereka dalam mem-build fitur untuk laporan kerusakan dan proses debug. Selama 18 bulan terakhir, kami telah membuat langkah besar untuk menjadikan Firebase platform yang bisa Anda gunakan untuk meningkatkan kualitas aplikasi, termasuk membawa Crashlytics Fabric ke Firebase. Hari ini, kami dengan gembira mengumumkan sejumlah peningkatan pada Crashlytics, yang membantunya terintegrasi lebih baik dengan fitur yang digunakan tim developer.

Integrasi Crashlytics untuk meningkatkan produktivitas Anda

Kami telah mendengar bahwa Anda mengandalkan berbagai fitur yang berbeda untuk membuat bisnis Anda sukses. Kami ingin mendatangi Anda di tempat Anda bekerja dan menguasakan Anda untuk menggunakan fitur terbaik bagi tugas tersebut. Itulah sebabnya kami meluncurkan beberapa integrasi baru untuk Firebase Crashlytics.
Yang pertama, Anda sekarang bisa mengekspor data Crashlytics dari Firebase ke BigQuery, yang memungkinkan Anda untuk menjalankan analisis sendiri pada laporan kerusakan yang disamarkan, termasuk semua metadata seperti nilai dan kunci khusus, log, dan ID pengguna. Kemudian Anda bisa memvisualisasikan data dan melihat tren dengan Data Studio atau fitur analytics bisnis lain yang Anda gunakan. Anda juga bisa mengambil kepemilikan data di BigQuery dengan menyetel kebijakan retensi dan penghapusan Anda sendiri.
Kedua, kami meluncurkan integrasi dengan Jira Software sehingga Anda bisa membuat laporan masalah Jira berdasarkan error yang dilaporkan di Firebase. Dikombinasikan dengan integrasi yang ada dengan Slack, tim Anda sekarang bisa melacak error yang sedang mereka garap, dengan fitur yang sudah mereka gunakan. Integrasi Jira akan diluncurkan dalam beberapa minggu mendatang dan bila Anda ingin mengelola integrasi Firebase sekarang, Anda bisa mengunjungi tab setelan di konsol.

Mem-build aplikasi yang lebih baik

Inti dari DNA Firebase adalah sekumpulan produk yang membantu developer seperti Anda mem-build infrastruktur backend seluler dengan cepat dan mudah. Bagaimanapun juga, ini dimulai dengan Realtime Database. Kami telah bekerja sama erat dengan Google Cloud Platform untuk mem-build fitur backend tanpa server generasi berikutnya, seperti Cloud Firestore dan Cloud Functions, dan kami terus meningkatkan produk tersebut. Kami juga meluncurkan beberapa penyempurnaan ke Firebase Hosting yang kami harap akan membantu Anda mem-build situs dengan lebih efisien.

Backend tanpa server yang skalabel dan lebih andal

Beberapa minggu yang lalu di Cloud Next 2018, kami memperkenalkan sejumlah peningkatan untuk Cloud Firestore dan Cloud Functions for Firebase. Cloud Firestore kini memungkinkan Anda meningkatkan database hingga 10.000 tulis per detik dan 1 juta pengguna bersamaan untuk menangani lonjakan traffic. Cloud Functions sekarang GA dan siap untuk penggunaan produksi -- dengan layanan terprediksi yang dijamin oleh SLA. Bila Anda ingin mem-build infrastruktur di bagian dunia tertentu, Cloud Firestore dan Cloud Functions akan mendukung region baru di Eropa dan Asia dalam beberapa bulan mendatang.

Menjadi host dan melakukan update beberapa situs dengan mudah

Masukan lain yang terus kami dengar adalah bahwa Anda tidak selalu memiliki hubungan one-to-one antara project Firebase dan situs yang dihosting. Dalam beberapa minggu mendatang, kami akan meluncurkan penyempurnaan untuk Firebase Hosting yang memungkinkan Anda menjadi host beberapa situs dalam satu project.
Selain itu, saat mendorong update ke sebuah situs, Firebase CLI (dari v4.1.0) sekarang hanya mengupload file yang telah berubah antar rilis. Ini secara dramatis mempercepat proses, sehingga memungkinkan Anda bekerja dengan lebih efisien.

Konsol yang lebih canggih

Halaman Project Overview di konsol telah menerima update besar, menyatukan data dari semua bagian Firebase yang berbeda untuk memberi Anda satu tampilan yang mencakup kesehatan aplikasi, layanan, dan bisnis. Selain data error dan analytics yang sudah ada, Anda kini bisa melihat masalah kinerja, notifikasi, dan status pengujian A/B, serta penggunaan dan data kesehatan untuk layanan Firebase lainnya seperti Functions, Hosting, dan Storage.

Anda juga akan melihat bahwa bagian Rilis Terbaru konsol sekarang memiliki data langsung. Ini adalah salah satu peningkatan yang paling sering diminta untuk analytics di konsol dan kami senang dapat menyediakannya bagi Anda.
Semua penyempurnaan ini mulai diluncurkan hari ini dan akan tersedia untuk semua pengguna dalam beberapa minggu.

Bergabunglah dengan kami di Firebase Summit

Terima kasih, telah menjadi bagian dari komunitas Firebase. Kami terus berusaha menciptakan komunitas yang bisa merangkul developer dengan berbagai latar belakang dan perusahaan dari semua tingkat kecanggihan. Masukan dan pertanyaan Anda sangat bernilai dalam membentuk masa depan Firebase, jadi, seperti biasa, Anda bisa menghubungi kami melalui saluran dukungan.
Bila Anda ingin bertemu tim secara langsung, silakan bergabung dengan kami di Firebase Summit tahunan pada tanggal 29 Oktober di Praha, Republik Ceko untuk sehari penuh sesi teknis, codelab langsung dengan bimbingan instruktur, dan babak update baru lainnya. Sampai jumpa di sana!


Ilustrasi oleh Virginia Poltrack

Katakanlah kita ingin menggambar latar belakang sudut membulat pada teks, yang mendukung kasus-kasus penggunaan berikut:
  • Menyetel latar belakang pada satu baris teks

Teks pada satu baris dengan latar belakang sudut membulat

  • Menyetel latar belakang pada dua atau beberapa baris teks

Teks pada beberapa baris dengan latar belakang sudut membulat

  • Menyetel latar belakang pada format teks kanan-ke-kiri

Format teks kanan ke kiri dengan latar belakang sudut membulat

Bagaimana cara kami mengimplementasikannya? Baca terus untuk mencari tahu, atau lompat langsung ke kode contoh.

Berdurasi atau tidak? Inilah pertanyaannya!

Di artikel sebelumnya, kami telah membahas bagian-bagian pemodelan teks (bahkan teks yang diinternasionalisasikan). Solusinya melibatkan penggunaan framework atau durasi khusus. Meskipun durasi adalah solusi yang bagus dalam banyak kasus, durasi memiliki beberapa keterbatasan yang membuat mereka tidak cocok untuk masalah kita. Durasi tampilan, seperti BackgroundColorSpan, memberi kita akses ke TextPaint, memungkinkan kita mengubah elemen seperti warna latar belakang teks, tetapi hanya mampu menggambar warna solid dan tidak bisa mengontrol elemen seperti radius sudut.

Teks menggunakan BackgroundColorSpan

Kita harus menggambar drawable bersama dengan teks. Kita bisa mengimplementasikan ReplacementSpan khusus untuk menggambar latar belakang dan teks itu sendiri. Namun ReplacementSpans tidak bisa mengalir ke baris berikutnya, sehingga kita tidak akan dapat mendukung latar belakang multibaris. Mereka lebih terlihat seperti Chip, komponen Desain Material, yang di setiap elemen harus muat dalam satu baris.
Durasi bekerja di level TextPaint, bukan level layout. Oleh karena itu, mereka tidak bisa mengetahui nomor baris teks dimulai dan berakhir, atau tentang arah paragraf (kiri-ke-kanan atau kanan-ke-kiri)

Solusi: TextView khusus

Bergantung pada posisi teks, kita perlu menggambar empat drawable yang berbeda sebagai latar belakang teks:
  • Teks muat dalam satu baris: kita hanya membutuhkan satu drawable
  • Teks muat dalam 2 baris: kita membutuhkan drawable untuk awal dan akhir teks
  • Teks mencakup beberapa baris: kita membutuhkan drawable untuk awal, tengah, dan akhir teks.

Keempat drawable yang perlu digambar bergantung pada posisi teks

Untuk memosisikan latar belakang, kita harus:
  • Tentukan apakah teks mencakup beberapa baris
  • Temukan baris awal dan akhir
  • Temukan offset awal dan akhir tergantung pada arah paragraf
Semua ini bisa dihitung berdasarkan Layout teks. Untuk merender latar belakang di belakang teks, kita membutuhkan akses ke Canvas. TextView khusus memiliki akses ke semua informasi yang diperlukan untuk memosisikan drawable dan merendernya.
Solusi kami melibatkan pemecahan masalah menjadi 4 bagian dan membuat class yang berhubungan dengan mereka secara individual:
  • Menandai posisi latar belakang dilakukan dalam sumber daya XML dengan durasi Annotation dan kemudian, dalam kode, kami menghitung posisi pada TextRoundedBgHelper
  • Menyediakan drawable latar belakang sebagai atribut TextView — diimplementasikan pada TextRoundedBgAttributeReader
  • Merender drawable tergantung pada apakah teks termuat dalam satu atau beberapa baris — antarmuka TextRoundedBgRenderer dan implementasinya: SingleLineRenderer dan MultiLineRenderer
  • Mendukung gambar khusus pada TextView — RoundedBgTextView, class yang memperluas AppCompatTextView, membaca atribut dengan bantuan TextRoundedBgAttributeReader, mengganti onDraw dengan menggunakan TextRoundedBgHelper untuk menggambar latar belakang.

Mencari tahu di mana latar belakang harus digambar

Kita menetapkan bagian-bagian teks yang harus memiliki latar belakang dengan menggunakan durasi Annotation dalam sumber daya string. Cari tahu selengkapnya tentang bekerja dengan durasi Annotation dari artikel ini.
Kami membuat class TextRoundedBgHelper yang:
  • Memungkinkan kita memosisikan latar belakang berdasarkan arah teks: kiri-ke-kanan atau kanan-ke-kiri
  • Merender latar belakang, berdasarkan drawable serta padding horizontal dan vertikal
Dalam metode TextRoundedBgHelper.draw, untuk setiap durasi Annotation yang ditemukan dalam teks, kita mendapatkan indeks awal dan akhir durasi, menemukan nomor baris untuk masing-masing durasi kemudian menghitung offset karakter awal dan akhir (dalam baris). Kemudian, kita menggunakan implementasi TextRoundedBgRenderer untuk merender latar belakang.
fun draw(canvas: Canvas, text: Spanned, layout: Layout) {
    // ideally the calculations here should be cached since 
    // they are not cheap. However, proper
    // invalidation of the cache is required whenever 
    // anything related to text has changed.
    val spans = text.getSpans(0, text.length, Annotation::class.java)
    spans.forEach { span ->
        if (span.value.equals("rounded")) {
            val spanStart = text.getSpanStart(span)
            val spanEnd = text.getSpanEnd(span)
            val startLine = layout.getLineForOffset(spanStart)
            val endLine = layout.getLineForOffset(spanEnd)

            // start can be on the left or on the right depending 
            // on the language direction.
            val startOffset = (layout.getPrimaryHorizontal(spanStart)
                + -1 * layout.getParagraphDirection(startLine) * horizontalPadding).toInt()
            // end can be on the left or on the right depending 
            // on the language direction.
            val endOffset = (layout.getPrimaryHorizontal(spanEnd)
                + layout.getParagraphDirection(endLine) * horizontalPadding).toInt()

            val renderer = if (startLine == endLine) singleLineRenderer else multiLineRenderer
            renderer.draw(canvas, layout, startLine, endLine, startOffset, endOffset)
        }
    }}

Menyediakan drawable sebagai atribut

Agar mudah menyediakan gambar bagi TextViews yang berbeda di aplikasi, kami menetapkan 4 atribut khusus yang sesuai dengan drawable dan 2 atribut untuk padding horizontal dan vertikal. Kami membuat class TextRoundedBgAttributeReader yang membaca atribut ini dari layout xml.

Merender drawable latar belakang

Setelah kita memiliki drawable, kita harus menggambarnya. Untuk itu, kita perlu tahu:
  • Baris awal dan akhir latar belakang
  • Offset karakter di mana latar belakang sebaiknya dimulai dan diakhiri.
Kami membuat class abstrak TextRoundedBgRenderer yang tahu cara menghitung offset atas dan bawah garis, tetapi memperlihatkan fungsi gambar abstrak:
abstract fun draw(
    canvas: Canvas,
    layout: Layout,
    startLine: Int,
    endLine: Int,
    startOffset: Int,
    endOffset: Int
)
Fungsi gambar akan memiliki implementasi yang berbeda bergantung pada apakah teks kita mencakup satu baris atau beberapa baris. Kedua implementasi ini bekerja dengan prinsip yang sama: berdasarkan baris atas dan bawah, menyetel batas-batas drawable dan merendernya di kanvas.
Implementasi baris tunggal hanya perlu menggambar satu drawable.

Teks baris tunggal

Implementasi multibaris harus menggambar drawable baris awal dan akhir pada baris pertama, dan baris terakhir, kemudian untuk setiap baris di tengah, gambar drawable baris tengah.

Teks multibaris

Mendukung gambar khusus pada TextView

Kami memperluas AppCompatTextView dan mengganti onDraw untuk memanggil TextRoundedBgHelper.draw sebelum membiarkan TextView menggambar teks.
Peringatan: Contoh kami melakukan semua perhitungan untuk setiap pemanggilan metode TextView.onDraw. Bila Anda berencana mengintegrasikan implementasinya di aplikasi Anda, kami sangat menyarankan untuk memodifikasinya dan meng-cache perhitungan yang dilakukan dalam TextRoundedBgHelper. Kemudian, pastikan Anda menghapus cache setiap kali ada sesuatu yang terkait dengan teks, seperti warna, ukuran, atau properti teks lainnya, telah berubah.
API teks Android memberikan Anda banyak kebebasan untuk melakukan pemodelan. Pemodelan sederhana bisa dilakukan dengan atribut, pemodelan, tema, dan durasi teks. Pemodelan khusus yang rumit bisa dicapai dengan mengambil kendali metode onDraw dan membuat keputusan tentang apa dan bagaimana cara menggambar di Canvas. Lihat contoh kami untuk semua detail implementasinya.
Jenis pemodelan teks apa yang harus Anda lakukan yang memerlukan implementasi TextView khusus? Masalah apa yang Anda hadapi? Beri tahu kami di kolom komentar!


Ditulis oleh Purnima Kochikar, Director, Google Play, Apps & Games
Pada hari Senin, kami merilis Android 9 Pie. Selagi kami terus mendorong platform Android maju, kami selalu mencari cara baru untuk mendistribusikan aplikasi Anda dengan lebih efisien, membantu orang menemukan dan berinteraksi dengan karya Anda, dan meningkatkan keamanan ekosistem secara keseluruhan. Google Play sangat sibuk tahun ini dengan beberapa tonggak penting untuk membantu Anda menjangkau lebih banyak pengguna, meliputi:
  • Mengecilkan ukuran download: Android App Bundle & Dynamic Delivery membantu mengurangi ukuran aplikasi hingga 65%, sehingga menyebabkan peningkatan download dan penurunan uninstal.
  • Membantu meningkatkan kualitas: Fitur baru di Konsol Play membantu Anda mengurangi tingkat error hingga 70%.
  • Meningkatkan penemuan: Peningkatan pada pengalaman penemuan telah meningkatkan kunjungan Google Play Store hingga 30% dalam 12 bulan terakhir.
  • Menjaga keamanan pengguna: Google Play Protect memindai lebih dari 50 miliar aplikasi setiap hari dan persyaratan adopsi Android API level 26 meningkatkan keamanan dan kinerja aplikasi.
Google Play didedikasikan untuk membantu Anda mem-build dan mengembangkan bisnis aplikasi berkualitas, menjangkau lebih dari 2 miliar perangkat Android secara global dan memberikan pengalaman yang lebih baik kepada pengguna. Berikut adalah beberapa area penting yang akan kami prioritaskan tahun ini:

Distribusi yang Inovatif


Kami telah menambahkan lebih banyak fitur pengujian ke Konsol Play populer untuk membantu developer menurunkan risiko peluncuran aplikasi dengan jalur pengujian internal dan eksternal serta peluncuran bertahap untuk mendapatkan masukan awal yang berharga. Tahun ini, kami memperluas program Start on Android secara global yang memberikan panduan tambahan bagi developer yang baru mengenal Android untuk mengoptimalkan aplikasinya sebelum diluncurkan. Google Play Instant tetap menjadi pertaruhan besar untuk mentransformasi penemuan aplikasi dan meningkatkan konversi dengan mengizinkan pengguna berinteraksi tanpa harus menginstal. Kami melihat hasil yang sangat bagus dari pengguna awal dan sedang bekerja di area baru untuk menampilkan pengalaman instan, termasuk iklan, dan mempermudah build mereka sepanjang tahun.

Meningkatkan Kualitas Aplikasi


Google Play memainkan peran penting untuk membantu developer memahami dan memperbaiki masalah kualitas dan kinerja. Di I/O, kami menunjukkan bagaimana kami memaksimalkan baterai, stabilitas, dan rendering pelaporan Android vitals untuk menyertakan penolakan izin & waktu mulai aplikasi, sehingga memungkinkan developer untuk memangkas error aplikasi tidak merespons hingga 95%. Kami juga memperluas fungsionalitas pengujian perangkat otomatis dengan laporan prapeluncuran untuk mengaktifkan pengujian game. Baru-baru ini, kami meningkatkan pentingnya kualitas aplikasi dalam rekomendasi penelusuran dan penemuan sehingga menghasilkan interaksi dan kepuasan yang lebih tinggi dengan game yang didownload.

Penemuan yang Lebih Kaya


Selama setahun terakhir, kami telah meluncurkan lebih banyak konten editorial dan meningkatkan machine learning untuk memberikan rekomendasi yang dipersonalisasi bagi aplikasi dan game yang mampu menarik pengguna. Karena sebagian besar download game berasal dari penelusuran (bukan penelusuran atau deep link ke dalam) store, kami memfokuskan khusus pada penemuan game, dengan halaman beranda game baru, bagian khusus untuk game premium dan baru, screenshot dan trailer video yang imersif, dan kemampuan untuk mencoba game secara langsung. Kami juga memperkenalkan program baru untuk membantu mendorong download aplikasi melalui penemuan yang lebih kaya. Misalnya, sejak meluncurkan program praregistrasi aplikasi pada tahun 2016, kami telah melihat hampir 250 juta praregistrasi aplikasi. Untuk selanjutnya, kami akan memperluas program-program ini dan program lainnya seperti kartu LiveOps untuk membantu developer berinteraksi lebih mendalam dengan audience mereka.

Memperluas Platform Commerce


Google Play sekarang menerima pembayaran di 150 market melalui kartu kredit, direct carrier billing (DCB), Paypal, dan kartu hadiah. Direct carrier billing sekarang aktif pada 167 operator di 64 market. Pada tahun 2018, kami berfokus untuk memperluas jejak kami di Afrika dan Latam dengan peluncuran di Ghana, Kenya, Tanzania, Nigeria, Peru & Kolombia. Dan pengguna kini bisa membeli kredit Google Play melalui kartu hadiah atau sarana lain di lebih dari 800.000 lokasi retail di seluruh dunia. Tahun ini, kami juga meluncurkan dukungan penjual di 18 market baru sehingga jumlah total market dengan dukungan penjual menjadi 98. Penawaran langganan kami terus meningkat dengan deteksi penipuan yang didukung ML dan bahkan lebih banyak kontrol bagi pelanggan dan developer. Pemodelan risiko Google Play secara otomatis membantu mendeteksi transaksi penipuan dan purchase API membantu Anda menganalisis data pengembalian dana dengan lebih baik untuk mengidentifikasi aktivitas yang mencurigakan.

Mempertahankan Ekosistem yang Aman & Kuat


Google Play Protect dan sistem kami yang lain memindai dan menganalisis lebih dari 50 miliar aplikasi setiap hari untuk menjaga keamanan ekosistem bagi pengguna dan developer. Faktanya, orang-orang yang hanya mendownload aplikasi dari Google Play memiliki kemungkinan sembilan kali lebih kecil untuk mendownload aplikasi yang berpotensi berbahaya daripada mereka yang mendownload dari sumber lain. Kami telah melakukan peningkatan signifikan dalam kemampuan kami mendeteksi penyalahgunaan—seperti pemalsuan, konten yang tidak pantas, penipuan, atau malware—melalui model dan teknik machine learning baru. Hasilnya adalah 99% aplikasi dengan konten melanggar bisa diidentifikasi dan ditolak sebelum siapa pun dapat menginstalnya. Kami juga terus menjalankan Google Play Security Rewards Program bekerja sama dengan Hacker One untuk menemukan kerentanan lainnya.
Kami terus terinspirasi dengan apa yang developer build—lihat #IMakeApps untuk contoh yang luar biasa—dan kami ingin agar setiap developer memiliki fitur yang dibutuhkan untuk sukses. Kami tak sabar ingin segera melihat kreasi Anda yang berikutnya!


Ditulis oleh Dave Burke, VP of Engineering

Setelah lebih dari setahun pengembangan dan berbulan-bulan pengujian oleh pengguna awal, kami siap meluncurkan Android 9 Pie, rilis Android terbaru, ke seluruh dunia.
Android 9 memanfaatkan kekuatan machine learning untuk menjadikan ponsel Anda lebih cerdas, sederhana, dan disesuaikan bagi Anda. Baca semua tentang fitur konsumen baru di sini. Bagi developer, Android 9 menyertakan banyak cara baru untuk meningkatkan aplikasi Anda dan mem-build pengalaman baru untuk mendorong interaksi.
Anda telah memberi kami banyak masukan selama ini--lebih dari seribu bug dan permintaan fitur--terima kasih! Lebih dari 140.000 dari Anda mencoba build pratinjau kami melalui program Android Beta, dan tujuh dari mitra pembuat perangkat kami juga menggunakan versi Beta kami ke perangkat flagship mereka, sehingga pengguna di seluruh dunia juga bisa memberikan masukan.
Hari ini kami mendorong kode sumber ke Proyek Open Source Android (AOSP), dan memulai peluncuran Android 9 ke semua pengguna Pixel di seluruh dunia, serta Android 9 akan hadir di lebih banyak perangkat dalam beberapa bulan mendatang.
Kami terus mengembangkan Android sebagai platform terbuka utama bagi para developer di seluruh dunia untuk mem-build bisnis mereka. Dengan Android 9 -- bersama dengan kemampuan baru yang kuat di Google Play untuk aplikasi dan game -- kami berkomitmen untuk membantu pengalaman hebat yang Anda build, serta menjangkau dan menarik pengguna yang tepat dengan aman dan hemat biaya di seluruh dunia.
Apa yang ada di Android 9?

Smartphone yang lebih cerdas, dengan machine learning di bagian intinya

Android 9 membantu ponsel Anda belajar saat Anda menggunakannya, dengan mengambil preferensi Anda dan menyesuaikan secara otomatis. Segala sesuatu dari membantu pengguna memaksimalkan masa pakai baterai hingga menampilkan bagian terbaik dari aplikasi yang digunakan setiap saat, tepat ketika mereka sangat membutuhkannya, Android 9 membuat semuanya berjalan lebih lancar dan lebih lama.

Adaptive Battery


Kami bermitra dengan DeepMind pada fitur yang disebut Adaptive Battery yang menggunakan machine learning untuk memprioritaskan sumber daya sistem bagi aplikasi yang paling sering dipakai pengguna. Bila aplikasi Anda dioptimalkan untuk Istirahatkan, Aplikasi Standby, dan Batasan Latar Belakang, Adaptive Battery seharusnya langsung bisa berfungsi dengan baik bagi Anda. Bila Anda belum mengoptimalkan aplikasi, pastikan untuk memeriksa detail dalam dokumentasi daya untuk melihat cara kerjanya.

Slices

Slices bisa membantu pengguna melakukan tugas lebih cepat dengan mengaktifkan interaksi di luar pengalaman aplikasi layar penuh. Ini dilakukan dengan menggunakan template UI yang bisa menampilkan konten yang beragam, dinamis, dan interaktif dari aplikasi Anda dari dalam aplikasi Google Penelusuran dan kemudian di tempat lain seperti Asisten Google. Anda bisa mempelajari lebih lanjut tentang mem-build Slices untuk meningkatkan aplikasi Anda di sini.

App Actions

App Actions adalah cara baru untuk meningkatkan visibilitas aplikasi Anda dan mendorong interaksi. Actions memanfaatkan machine learning untuk memunculkan aplikasi Anda kepada pengguna pada saat yang tepat, berdasarkan intent semantik aplikasi dan konteks pengguna.

Kami akan membagikan lebih banyak detail dalam beberapa minggu mendatang mengenai pendaftaran aplikasi untuk menangani satu atau beberapa intent pengguna, sehingga aplikasi Anda bisa diaktifkan untuk App Actions dan muncul di berbagai tampilan Google dan Android dalam merespons permintaan pengguna.

Text Classifier dan Smart Linkify


Kami telah memperluas model ML yang mengidentifikasi entitas dalam konten atau masukan teks untuk mendukung lebih banyak tipe seperti Tanggal dan Nomor Penerbangan melalui TextClassifier API. Smart Linkify memungkinkan Anda memanfaatkan model TextClassifier melalui Linkify API, termasuk opsi yang ditingkatkan untuk tindakan pengguna dengan tindak lanjut yang cepat. Smart Linkify juga memberikan peningkatan signifikan dalam akurasi deteksi serta kinerja.

Neural Networks API 1.1

Android 9 menambahkan versi terupdate Neural networks API, untuk memperluas dukungan Android bagi machine learning pada-perangkat yang dipercepat. Neural Networks 1.1 menambahkan dukungan untuk sembilan operasi baru -- Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub, dan Squeeze. Cara khusus untuk memanfaatkan API adalah melalui TensorFlow Lite.

Mendapatkan hasil maksimal dari ponsel Anda -- dengan lebih mudah

Kami senang membuat smartphone Anda lebih cerdas. Namun, harap ingat bahwa teknologi memudar mundur untuk pengguna. Di Android 9, kami telah mengembangkan Android UI menjadi lebih sederhana dan lebih ramah -- untuk developer, perubahan ini membantu meningkatkan cara pengguna menemukan, menggunakan, dan mengelola aplikasi Anda.

Navigasi sistem yang baru

Android 9 memperkenalkan navigasi sistem baru yang telah kami kerjakan lebih dari setahun. Desain baru ini membantu membuat multitasking Android lebih ramah dan membuat aplikasi lebih mudah ditemukan. Anda bisa menggeser ke atas dari mana saja untuk melihat pratinjau layar penuh dari aplikasi yang baru saja digunakan dan cukup lakukan tap untuk masuk kembali ke salah satu aplikasi tersebut.

Cutout tampilan

Sekarang aplikasi Anda bisa memanfaatkan sepenuhnya layar tepi-ke-tepi terbaru melalui dukungan cutout tampilan di Android 9. Untuk sebagian besar aplikasi, mendukung cutout tampilan sangatlah mudah, dengan sistem mengelola tinggi status bar untuk memisahkan konten Anda dari cutout. Bila Anda memiliki konten imersif, Anda bisa menggunakan display cutout API untuk memeriksa posisi dan bentuk cutout serta meminta layout layar penuh di sekitarnya. Untuk membantu pengembangan dan pengujian, kami telah menambahkan Developer Option yang menyimulasikan beberapa bentuk cutout di setiap perangkat.

Aplikasi dengan konten imersif bisa menampilkan konten layar penuh pada perangkat dengan cutout tampilan.

Notifikasi dan smart reply

Android 9 membuat notifikasi lebih berguna dan lebih dapat ditindaklanjuti. Aplikasi Messaging bisa memanfaatkan MessagingStyle API baru untuk menampilkan percakapan, menyematkan foto dan stiker, bahkan menyarankan smart reply. Anda akan segera bisa menggunakan ML Kit untuk membuat saran smart reply bagi aplikasi Anda.
Notifikasi MessagingStyle dengan percakapan dan smart reply [kiri], gambar dan stiker [kanan].

Text Magnifier


Di Android 9 kami telah menambahkan widget Magnifier untuk meningkatkan pengalaman pengguna dalam memilih teks. Widget Magnifier memungkinkan pengguna secara tepat memosisikan kursor atau tuas pemilih teks dengan menampilkan teks yang diperbesar melalui panel yang bisa diseret. Anda bisa menyematkannya ke tampilan apa pun yang tersemat ke jendela, sehingga Anda dapat menggunakannya di widget khusus atau selama perenderan teks khusus. Widget Magnifier juga menyediakan versi yang diperbesar dari setiap tampilan atau latar apa pun, bukan hanya teks.
Lihat entri blog terbaru kami untuk mengetahui lebih lanjut tentang ini dan fitur Text lainnya, seperti PrecomputedText serta penjajaran teks baseline dan tinggi garis.

Keamanan dan privasi untuk pengguna

Biometric prompt


Dengan berbagai sensor biometrik yang digunakan untuk autentikasi, kami membuat pengalaman lebih konsisten di seluruh jenis sensor dan aplikasi. Android 9 memperkenalkan dialog yang dikelola sistem guna meminta pengguna untuk semua jenis autentikasi biometrik yang didukung. Aplikasi tidak perlu lagi mem-build dialognya sendiri--sebagai gantinya, mereka menggunakan BiometricPrompt API untuk menampilkan dialog sistem standar. Selain Sidik Jari (termasuk sensor dalam-tampilan), API mendukung autentikasi Wajah dan Iris.
Bila aplikasi Anda menggambar sendiri dialog autentikasi sidik jari, Anda harus beralih menggunakan BiometricPrompt API sesegera mungkin. Lihat postingan ini untuk informasi selengkapnya.

Protected Confirmation

Android 9 memperkenalkan Android Protected Confirmation, yang menggunakan Trusted Execution Environment (TEE) untuk menjamin bahwa string prompt yang diberikan ditampilkan dan dikonfirmasi oleh pengguna. Hanya setelah berhasil dikonfirmasi pengguna, TEE akan menandatangani string prompt, yang bisa diverifikasi oleh aplikasi.

Perlindungan yang lebih kuat untuk kunci pribadi

Kami telah menambahkan StrongBox sebagai tipe KeyStore baru, menyediakan dukungan API untuk perangkat yang menyediakan penyimpanan kunci dalam hardware tahan-rusak dengan CPU, RAM, dan flash aman yang terisolasi. Anda bisa mengatur apakah kunci Anda harus dilindungi oleh chip keamanan StrongBox di KeyGenParameterSpec.

DNS over TLS

Android 9 menambahkan dukungan bawaan untuk DNS over TLS, secara otomatis mengupgrade kueri DNS ke TLS jika server DNS jaringan mendukungnya. Pengguna bisa mengelola perilaku DNS over TLS dalam Mode Private DNS baru di setelan Jaringan & internet. Aplikasi yang menjalankan kueri DNS mereka sendiri bisa menggunakan API baru, LinkProperties.isPrivateDnsActive(), untuk memeriksa mode DNS. Selengkapnya di postingan ini.

HTTPS secara default

Sebagai bagian dari upaya yang lebih besar untuk memindahkan semua traffic jaringan dari cleartext (HTTP tidak dienkripsi) ke situs yang diamankan dengan TLS (HTTPS), kami mengubah setelan default untuk Network Security Configuration agar memblokir semua traffic cleartext. Anda sekarang harus membuat koneksi melalui TLS, kecuali Anda secara eksplisit memilih cleartext untuk domain tertentu. Lihat detail di sini.

Mitigasi keamanan berbasis compiler

Di Android 9 kami telah memperluas penggunaan mitigasi tingkat compiler untuk memperkuat platform melalui deteksi waktu proses dari perilaku berbahaya. Teknik Control Flow Integrity (CFI) membantu mencegah serangan menggunakan kelemahan kode dan eksekusi kode arbitrer. Di Android 9 kami memperluas penggunaan CFI lebih jauh lagi dalam framework media dan komponen keamanan penting lainnya, seperti NFC dan Bluetooth. Kami juga memperkenalkan dukungan kernel CFI ke dalam kernel umum Android ketika mem-build dengan LLVM.
Kami juga memperluas penggunaan Integer overflow sanitizers untuk mengurangi kerentanan korupsi memori dan penyingkapan informasi. Kami memprioritaskan sanitizers pada library dengan kerentanan masa lalu atau ketika masukan tak tepercaya yang kompleks diproses, seperti libui, libnl, libmediaplayerservice dan lainnya. Lihat postingan ini untuk detailnya.

Privasi untuk pengguna

Android 9 menjaga privasi dengan sejumlah cara baru. Sistem sekarang membatasi akses ke mikrofon, kamera, dan semua sensor SensorManager dari aplikasi yang tidak berjalan. Ketika UID aplikasi Anda tidak berjalan, mikrofon tidak melaporkan audio dan sensor berhenti melaporkan event. Kamera yang digunakan oleh aplikasi Anda akan terputus dan menampilkan error bila aplikasi tersebut mencoba menggunakannya. Dalam kebanyakan kasus, pembatasan ini seharusnya tidak menimbulkan masalah baru untuk aplikasi yang sudah ada, tetapi kami sarankan agar menghapus permintaan ini dari aplikasi Anda.
Android 9 juga memberi pengguna kontrol untuk akses ke ID build.serial platform dengan menempatkannya di belakang izin READ_PHONE_STATE. Untuk mengakses ID build.serial, Anda harus menggunakan metode Build.getSerial().
Baca selengkapnya mengenai semua perubahan privasi di sini.

Pengalaman baru dalam kamera, audio, dan grafik

Multi-camera API dan update kamera lainnya

Dengan Android 9, kini Anda bisa membuka streaming dari dua atau beberapa kamera secara bersamaan pada perangkat yang mendukung multi-camera API. Pada perangkat dengan kamera dual-depan atau dual-belakang, Anda bisa membuat fitur inovatif yang tidak mungkin dilakukan dengan hanya satu kamera saja, seperti zoom yang mulus, bokeh, dan stereo vision. API ini juga memungkinkan Anda memanggil streaming kamera logis atau tergabung yang bisa secara otomatis beralih di antara dua atau beberapa kamera.
Penyempurnaan lain pada kamera termasuk parameter Session baru yang membantu mengurangi penundaan selama pengambilan awal, dan Surface sharing yang memungkinkan klien kamera menangani berbagai kasus penggunaan tanpa harus berhenti dan memulai streaming kamera. Kami juga menambahkan API untuk dukungan flash berbasis tampilan dan akses ke OIS timestamp untuk efek khusus dan stabilisasi gambar tingkat aplikasi.

Kompresi gambar HEIF dan Video HDR VP9

Android 9 menambahkan dukungan bawaan untuk HDR VP9 Profile 2, sehingga kini Anda bisa menghadirkan film berkemampuan HDR kepada pengguna pada perangkat berkemampuan HDR.
Kami sangat gembira bisa menambahkan encoding gambar HEIF (heic) ke platform. HEIF adalah format populer untuk foto yang meningkatkan kompresi untuk menghemat penyimpanan dan data jaringan. Dengan dukungan platform pada perangkat Android 9, kini mengirim dan menggunakan gambar HEIF dari server backend Anda bisa dilakukan dengan mudah. Setelah memastikan bahwa aplikasi Anda kompatibel dengan format data ini untuk dibagikan dan ditampilkan, cobalah HEIF sebagai format penyimpanan gambar di aplikasi Anda. Anda bisa melakukan konversi jpeg-ke-heic menggunakan ImageDecoder atau BitmapFactory untuk menghasilkan bitmap dari jpeg, dan Anda dapat menggunakan HeifWriter di library AndroidX untuk menulis gambar HEIF dari buffer byte YUV, Surface, atau Bitmap.

Audio yang ditingkatkan dengan Dynamics Processing

Dynamics Processing API memungkinkan Anda menggunakan efek audio baru untuk mengisolasi frekuensi tertentu dan melirihkan suara keras atau mengeraskan suara lirih untuk meningkatkan kualitas akustik aplikasi. Misalnya, Anda bisa mengeraskan suara seseorang yang berbicara dengan lirih dalam lingkungan yang bising, jauh, atau menantang secara akustik. API ini memberi Anda akses ke efek pemrosesan dinamis multitahap dan multifrekuensi yang mencakup pra-equalizer, kompresor multifrekuensi, pasca-equalizer, dan pembatas yang terhubung.

ImageDecoder untuk bitmap dan sumber daya dapat digambar

ImageDecoder API memberi Anda cara yang lebih mudah untuk melakukan dekode gambar menjadi bitmap atau sumber daya dapat digambar. Anda bisa membuat bitmap atau sumber daya dapat digambar dari buffer byte, file, atau URI. API ini menawarkan beberapa keunggulan dibandingkan BitmapFactory, termasuk dukungan untuk penskalaan yang tepat, decoding satu langkah ke memori hardware, dukungan untuk pascapemrosesan dalam dekode, dan decoding gambar animasi. Anda bisa membaca selengkapnya di sini.

Konektivitas dan lokasi

Wi-Fi RTT untuk pemosisian dalam ruangan


Android 9 memungkinkan Anda mem-build fitur pemosisian dalam ruangan ke dalam aplikasi melalui dukungan platform untuk protokol Wi-Fi IEEE 802.11mc -- juga dikenal sebagai Wi-Fi Round-Trip-Time (RTT). Pada perangkat Android 9 dengan dukungan hardware, izin lokasi, dan lokasi diaktifkan, aplikasi Anda bisa menggunakan RTT API untuk mengukur jarak ke Wi-Fi Access Points (AP) terdekat. Perangkat tidak perlu terhubung ke AP untuk menggunakan RTT, dan untuk menjaga privasi, hanya ponsel yang bisa menentukan jarak, bukan AP.
Dengan mengetahui jarak ke 3 atau beberapa AP, Anda bisa menghitung posisi perangkat dengan akurasi 1 sampai 2 meter. Dengan akurasi ini Anda bisa mendukung kasus penggunaan seperti navigasi di dalam bangunan; layanan berbasis lokasi yang akurat seperti kontrol suara yang jelas (mis. 'Hidupkan lampu ini'); dan informasi berbasis lokasi (mis. 'Adakah penawaran spesial untuk produk ini?').

Sensitivitas biaya data di JobScheduler

JobScheduler adalah layanan terpusat Android untuk membantu Anda mengelola kerja atau tugas terjadwal di Istirahatkan, Aplikasi Standby, dan Batasan Latar Belakang. Di Android 9, JobScheduler menangani tugas yang berhubungan dengan jaringan agar menguntungkan pengguna, berkoordinasi dengan sinyal status jaringan yang disediakan secara terpisah oleh operator. Jobs sekarang bisa mendeklarasikan ukuran data yang diperkirakan, prefetch sinyal, dan menetapkan persyaratan jaringan dengan terperinci—operator dapat melaporkan jaringan ketika padat atau tidak dibatasi. JobScheduler kemudian mengelola tugas sesuai dengan status jaringan. Misalnya, ketika suatu jaringan padat, JobScheduler mungkin menunda permintaan jaringan yang berukuran besar. Bila jaringan tidak dibatasi, ia bisa menjalankan tugas prefetch untuk meningkatkan pengalaman pengguna, seperti memuat awal judul utama.

Open Mobile API untuk pembayaran NFC dan transaksi yang aman

Android 9 menambahkan implementasi GlobalPlatform Open Mobile API ke Android. Pada perangkat yang didukung, aplikasi bisa menggunakan OMAPI API untuk mengakses secure element (SE) untuk mengaktifkan pembayaran smart-card dan layanan aman lainnya. Hardware abstraction layer (HAL) menyediakan API dasar untuk memperinci berbagai Secure Element (eSE, UICC, dan lainnya) yang tersedia.

Kinerja untuk aplikasi

Kinerja ART

Android 9 menghadirkan peningkatan kinerja dan efisiensi untuk semua aplikasi melalui waktu proses ART. Kami telah memperluas penggunaan profil eksekusi ART untuk mengoptimalkan aplikasi dan mengurangi jejak dalam memori dari kode aplikasi yang dikompilasi. ART sekarang menggunakan informasi profil untuk penulisan ulang file DEX pada perangkat, dengan pengurangan hingga 11% pada berbagai aplikasi populer. Kami berharap ini berkorelasi erat dengan pengurangan penggunaan memori DEX sistem dan waktu startup yang lebih cepat untuk aplikasi Anda.

Dioptimalkan untuk Kotlin

Kotlin adalah bahasa utama di Android, dan bila Anda belum mencobanya, Anda harus melakukannya! Kami telah membuat komitmen abadi kepada Kotlin di Android dan terus memperluas dukungan termasuk mengoptimalkan kinerja kode Kotlin. Di Android 9, Anda akan melihat hasil pertama dari pekerjaan ini--kami telah menyempurnakan beberapa optimalisasi compiler, terutama yang menargetkan loop, untuk mengekstrak kinerja yang lebih baik. Kami juga terus bekerja sama dengan JetBrains untuk mengoptimalkan kode yang dihasilkan Kotlin. Anda bisa mendapatkan semua peningkatan kinerja Kotlin terbaru ini hanya dengan mengupdate plugin Kotlin Android Studio.
Hari ini, kami juga merilis update untuk Android 9 - API 28 SDK (rev. 6), yang berisi anotasi nullability di beberapa API yang paling sering digunakan. Kami akan memberikan detail selengkapnya tentang hal ini di postingan mendatang.

Android Modern

Sebagai bagian dari Android 9, kami memodernisasi fondasi Android dan aplikasi yang berjalan di atasnya, sebagai bagian dari investasi kami yang menyeluruh dan berkelanjutan dalam keamanan, kinerja, dan stabilitas.
Seperti yang kami umumkan tahun lalu, Google Play mengharuskan semua update aplikasi menargetkan Android Oreo (targetSdkVersion 26 atau yang lebih tinggi) sebelum November 2018. Sejalan dengan hal tersebut, jika aplikasi Anda menargetkan platform yang lebih rendah dari Android 4.2 (API level 17), pengguna yang menginstalnya akan melihat dialog peringatan setelah hari itu. Berikut adalah checklist sumber daya untuk mendapatkan bantuan dan dukungan saat Anda bermigrasi -- kami menantikan aplikasi Anda agar mendapatkan hasil maksimal dari Android modern.

Persiapkan aplikasi Anda untuk Android 9!


Dengan Android 9 hadir ke pengguna Pixel mulai hari ini, dan ke perangkat lainnya pada bulan depan, penting untuk menguji kompatibilitas aplikasi Anda secepatnya. Cukup instal aplikasi Anda dari Google Play ke perangkat atau emulator yang menjalankan Android 9. Saat mengerjakan hal tersebut, pastikan aplikasi Anda berjalan dan terlihat bagus, dan menangani perubahan perilaku Android 9 dengan benar.
Perhatikan juga penggunaan antarmuka non-SDK di aplikasi Anda. Android 9 membatasi akses ke antarmuka non-SDK yang dipilih, jadi Anda harus mengurangi ketergantungan pada mereka. Lihat postingan blog terbaru kami untuk mengetahui detailnya.
Setelah melakukan update yang diperlukan, kami sarankan untuk langsung memublikasikan aplikasi di Google Play tanpa mengubah target platform aplikasi. Ini memungkinkan Anda memastikan pengalaman yang luar biasa bagi pengguna Android 9 selagi Anda berupaya meningkatkan aplikasi dengan penargetan dan API Android 9.

Meningkatkan aplikasi Anda dengan API dan fitur Android 9

Saat Anda siap, masuklah ke dalam Android 9 dan build dengan fitur dan API baru di Android 9.
Untuk memulai, cukup download API 28 SDK resmi dan fitur terbaru serta emulator gambar ke Android Studio 3.1, atau gunakan versi terbaru Android Studio 3.2. Kemudian update compileSdkVersion dan targetSdkVersion project Anda ke API 28. Saat Anda mengubah penargetan, pastikan aplikasi Anda mendukung semua perubahan perilaku yang berlaku.
Segera setelah siap, publikasikan update APK Anda ke Google Play. Strategi yang biasa dipakai adalah menggunakan fitur pengujian beta Google Play untuk mendapatkan masukan awal dari sekelompok kecil pengguna dan kemudian melakukan peluncuran bertahap ke produksi.
Kunjungi situs Android 9 untuk detail dan dokumentasi developer. Lihat juga video ini dan Playlist Google I/O Android untuk mengetahui selengkapnya tentang fitur baru di Android 9 untuk developer.

Hadir ke perangkat di dekat Anda

Mulai hari ini, update melalui udara untuk Android 9 akan mulai diluncurkan ke ponsel Pixel. Dan perangkat yang berpartisipasi dalam program Beta dari Sony Mobile, Xiaomi, HMD Global, Oppo, Vivo, OnePlus, dan Essential, serta semua perangkat Android One yang memenuhi syarat, akan menerima update ini pada akhir musim gugur! Kami juga bekerja sama dengan sejumlah mitra lain untuk meluncurkan atau mengupgrade perangkat ke Android 9 tahun ini.
Seperti biasa, gambar sistem bagi perangkat Pixel tersedia di sini untuk didownload dan flash manual. Bila Anda mencari sumber Android 9, Anda bisa menemukannya di sini di repositori Proyek Open Source Android dalam cabang Android 9.

Apa yang berikutnya?

Sekarang setelah kami mencapai rilis resmi, kami akan menutup Pratinjau Developer. Kami akan segera menutup issue tracker Pratinjau Developer untuk masalah baru, jadi bila Anda memiliki masukan, jangan ragu untuk melaporkan masalah baru terhadap Android 9 di issue tracker AOSP.
Terima kasih kepada banyak developer dan pengguna awal yang berpartisipasi dalam Android 9 Pratinjau Developer dan beta versi publik. Kontribusi Anda sangatlah penting dalam membuat platform Android 9 menjadi platform yang luar biasa bagi developer dan konsumen.

Baru-baru ini, di Cloud Next 2018, kami melihat update yang sangat dinantikan untuk Cloud Functions, dan khususnya, ketersediaan Cloud Functions for Firebase secara umum. Sebagai bagian dari rilis tersebut, ada beberapa konfigurasi tambahan yang bisa Anda gunakan dalam functions Anda saat menerapkan dengan Firebase CLI. Mari kita lihat!

Runtime Node.js 8 sekarang sudah tersedia

Anda sekarang bisa menargetkan Node.js 8 sebagai opsi runtime (dalam versi beta, menargetkan versi 8.11.1). Apa untungnya bagi Anda? Yang paling menonjol, Node.js 8 menawarkan peningkatan kinerja dengan runtime JavaScript V8, dan kemampuan yang sangat dinantikan yaitu menggunakan sintaks async/await ECMAScript 2017 dengan JavaScript bawaan, tanpa harus melakukan transpile. Anda bisa membaca selengkapnya tentang async functions di sini.
Anda bisa mulai menerapkan functions ke runtime Node.js 8 dengan mengupdate Firebase CLI ke setidaknya versi 4.0.0. Untuk mendapatkan yang terbaru:
$ npm install -g firebase-tools@latest
$ firebase --version
4.0.0
Anda juga harus menggunakan setidaknya versi 2.0.1 dari modul firebase-functions dalam project Anda:
$ npm install firebase-functions@latest
Setelah itu, Anda harus membuat perubahan kecil pada konfigurasi project dalam package.json. Cukup tambahkan kunci dan nilai berikut pada tingkat atas konfigurasi JSON:
"engines": { "node": "8" }
Sekarang, ketika Anda menjalankan firebase deploy, CLI akan memberi beberapa masukan tentang runtime penerapan dalam keluarannya:
i  functions: updating Node.js 8 function onMessageCreate(us-central1)...
i  functions: updating Node.js 8 function onMessageDelete(us-central1)...
Bagi Anda yang menggunakan TypeScript untuk menulis functions (dan saya sangat menyarankannya!), Anda juga bisa mengupdate konfigurasi TypeScript di tsconfig.json untuk menargetkan ECMAScript 2017 sebagai ganti ES6. Konfigurasi baru Anda akan memiliki blok compilerOptions yang terlihat seperti berikut ini. Perhatikan bahwa nilai target dan lib sekarang berubah menjadi "es2017" sebagai ganti "es6".
  "compilerOptions": {
    "target": "es2017",
    "lib": ["es2017"],
    "module": "commonjs",
    ...
  }
Dengan ini, Anda akan melihat bahwa TypeScript yang terenkripsi tidak lagi mengonversi async/await untuk generator JavaScript, yang berarti ia akan menjadi sedikit lebih kencang dan cepat.
Google Cloud Functions sekarang juga memungkinkan developer mem-build dengan Python, tetapi, saat ini Firebase CLI tidak mendukung runtime tersebut.

Opsi konfigurasi runtime baru

Dengan menggunakan Firebase CLI, Anda bisa menetapkan region per-function untuk menghadirkan infrastruktur tanpa server lebih dekat ke pelanggan atau infrastruktur cloud lainnya. Anda juga bisa menetapkan waktu tunggu dan alokasi memori berbasis per-function, menyesuaikan kinerja dengan kasus penggunaan Anda.
Anda bisa melakukannya dengan modul firebase-functions yang sudah Anda gunakan untuk mem-build functions, dan Anda dapat menerapkan konfigurasi ini untuk semua tipe pemicu. Perhatikan metode region dan runWith baru dalam contoh kode ini:
const functions = require('firebase-functions');

exports.myHttpFunction = functions
  // Choose a region other than the default us-central1
  .region('europe-west1')
  // Increased memory, decreased timeout (compared to defaults)
  .runWith({ memory: '1GB', timeoutSeconds: 120 })
  .https
  .onRequest((req, res) = > {
     // time and memory intensive tasks
     res.send('Hello world');
  });
Diperlukan modul firebase-functions versi 2.0.1 atau yang lebih baru.

Memulai Cloud Functions for Firebase

Bila Anda baru saja memulai Firebase SDK untuk Cloud Functions, cobalah ikuti codelab langkah demi langkah kami dan kunjungi dokumentasi. Kami juga memiliki tutorial video untuk membantu Anda mempersiapkan penggunaan TypeScript:
Kami berharap fungsionalitas baru ini bermanfaat bagi Anda, dan kami berharap bisa terus memberi Anda lebih banyak fitur untuk membantu aplikasi yang benar-benar tanpa server yang Anda build!


Ditulis oleh Zachary Senzer, Product Manager
Beberapa bulan yang lalu di Google I/O, kami mengumumkan konsol Actions yang didesain ulang sehingga membuat pengembangan Actions Anda lebih mudah daripada sebelumnya. Konsol Actions yang baru menghadirkan pengalaman pengembangan yang lebih mulus dengan menyesuaikan alur kerja Anda dari peluncuran hingga penerapan, dengan analytics yang disesuaikan untuk mengelola Actions Anda pascapeluncuran. Cukup pilih kasus penggunaan Anda selama peluncuran dan konsol Actions akan memandu Anda melewati berbagai tahap pengembangan.
Berikut adalah 5 tips untuk membantu Anda membuat Actions terbaik bagi konten menggunakan konsol baru kami.

1. Optimalkan Actions Anda untuk tampilan luar baru dengan kustomisasi tema

Salah satu bagian yang membuat ekosistem Actions on Google begitu istimewa adalah begitu banyaknya perangkat yang bisa digunakan pengguna untuk berinteraksi dengan Actions Anda. Beberapa perangkat ini, termasuk ponsel dan smart display kami yang baru, memungkinkan pengguna melakukan interaksi visual yang kaya dengan konten Anda. Untuk membantu Actions menonjol, Anda bisa menyesuaikan bagaimana pengalaman visual ini terlihat bagi pengguna perangkat-perangkat ini. Cukup kunjungi tab "Build" dan masuk ke theme customization di konsol Actions dan Anda bisa menentukan gambar latar, tipografi, warna, dan lainnya bagi Actions Anda.

2. Mulai membuat Actions Anda lebih mudah ditemukan dengan intent bawaan

Pengalaman percakapan bisa menghadirkan kompleksitas dalam bagaimana orang bertanya untuk menyelesaikan suatu tugas yang terkait dengan Action Anda--pengguna dapat meminta game dengan ribuan cara berbeda ("mainkan game untukku", "temukan kuis peta", "Saya ingin tebak-tebakan"). Mencari tahu semua kemungkinan yang mungkin ditanyakan pengguna untuk Action Anda bukanlah hal yang mudah. Untuk membuat proses ini lebih mudah, kami mulai memetakan hal yang mungkin ditanyakan pengguna untuk Action Anda ke dalam taksonomi intent bawaan untuk mengurangi kesulitannya.
Kami akan mulai menggunakan intent bawaan yang Anda kaitkan dengan Action untuk membantu pengguna lebih mudah menemukan konten saat kami mulai mengujinya dengan pertanyaan pengguna. Kami akan terus menambahkan lebih banyak intent bawaan selama beberapa bulan mendatang untuk mencakup berbagai kasus penggunaan. Di konsol Actions, buka tab "Build", klik "Actions", kemudian "Add Action" dan pilih salah satu untuk memulai.

3. Promosikan Actions Anda dengan Action Links

Meskipun kami akan terus meningkatkan cara pengguna menemukan Actions Anda dalam Asisten, kami juga mempermudah pengguna untuk menemukan Actions di luar Asisten. Mendorong traffic baru ke Actions Anda semudah klik dengan Action Links. Anda sekarang memiliki kemampuan untuk menentukan hyperlink bagi setiap Actions untuk digunakan di situs Anda, media sosial, newsletter email, dan banyak lagi. Link ini akan meluncurkan pengguna langsung ke dalam Action Anda. Bila digunakan di desktop, link akan mengarahkan pengguna ke halaman direktori bagi Action Anda dan pengguna akan diperbolehkan untuk mencoba Action pada perangkat yang mereka pilih. Untuk mengonfigurasi Action Links di konsol, kunjungi tab "Build", pilih "Actions", dan pilih Action yang ingin Anda buat link-nya. Itu saja!

4. Pastikan Actions Anda berkualitas tinggi dengan menguji menggunakan simulator web dan lingkungan versi alfa/beta kami

Cara terbaik untuk memastikan bahwa Actions Anda berfungsi sebagaimana mestinya adalah dengan mengujinya menggunakan simulator web terupdate kami. Di simulator, Anda bisa menjalankan alur penggunaan percakapan di ponsel, speaker, dan bahkan tipe perangkat smart display. Setelah memberikan permintaan, Anda bisa melihat respons visual, permintaan, dan respons JSON, bersama dengan setiap potensi error. Untuk bantuan lebih lanjut dengan error proses debug, Anda juga memiliki kemampuan untuk melihat log bagi Actions Anda.
Kesempatan lain yang bagus untuk menguji Actions Anda adalah dengan menerapkannya ke audience terbatas dalam lingkungan versi alfa dan beta. Dengan menerapkan ke lingkungan versi alfa, Actions Anda tidak perlu melalui proses peninjauan, yang berarti Anda bisa dengan cepat mengujinya dengan pengguna Anda. Setelah menerapkan ke lingkungan versi beta, Anda bisa meluncurkan Actions ke produksi kapan pun Anda suka tanpa tinjauan tambahan. Untuk menggunakan lingkungan versi alfa dan beta, buka tab "Deploy" dan klik "Release" di konsol Actions.


5. Ukur keberhasilan Anda menggunakan analytics

Setelah Anda menerapkan Actions, sangatlah penting untuk mengukur kinerjanya. Dengan mengunjungi tab "Measure" dan mengklik "Analytics" di konsol Actions, Anda bisa melihat analytics yang beragam mengenai penggunaan, kesehatan, dan penemuan. Anda bisa dengan mudah melihat jumlah orang yang menggunakan dan kembali ke Actions Anda, berapa banyak error yang dialami pengguna, frasa yang diucapkan pengguna untuk menemukan Actions Anda, dan masih banyak lagi. Data ini bisa membantu Anda meningkatkan Actions.




Bila Anda baru mengenal konsol Actions dan mencari cara cepat untuk memulai, tonton video ini untuk ringkasan proses pengembangan.
Kami sangat senang melihat bagaimana Anda akan menggunakan konsol Actions baru untuk membuat lebih banyak Actions bagi lebih banyak kasus penggunaan, dengan fitur tambahan untuk melakukan peningkatan dan iterasi. Selamat membangun!