Blackberry 10 : Mengintegrasikan aplikasi dengan Sistem Search

Alhamdulillah selama ini saya masih bisa untuk sering melakukan pembaruan terhadap aplikasi Quran. Meskipun sudah jarang pembaruan tersebut saya push ke github page. Hal ini karena ada beberapa developer yang kurang bertanggung jawab langsung mengcopy, mem-build dan menjualnya di BlackBerry World dengan tanpa memberikan credit kepada developer awal (saya) maupun disainer awal (mas Riswan).

Pembaruan terbaru yang segera ada dan dinikmati oleh semua pengguna aplikasi Quran adalah integrasi denga default sistem search yang ada di Sistem Operasi BlackBerry 10 (extended search). Untuk mengintegrasikan aplikasi kita dengan default search BB10 cukup mudah berikut caranya:

1. Jadikan aplikasi kita sebagai invocation target

Agar aplikasi kita bisa menjadi invocation target untuk extend search, pertama edit bar-descriptor.xml dengan menambahkan property seperti ini:

	<invoke-target id="com.hakimlabs.quran.search">
          <invoke-target-type>APPLICATION</invoke-target-type>
          <filter>
                 <action>bb.action.SEARCH.EXTENDED</action>
                 <mime-type>application/vnd.bb.search.criteria</mime-type>
          </filter>
          <icon>
		 <image>quran_icon2.png</image>
	  </icon>
       </invoke-target>

dengan ini kita sudah menyiapkan aplikasi kita sebagai invocation target untuk extended search. Sekarang tinggal menyiapkan apa yang kita lakukan saat aplikasi di invoke.

2. Handle saat aplikasi menerima invocation

dengan object invocationManager kita bisa menghubungkan signal invoke dari extended search dengan slot yang kita buat:

_invokeManager = new InvokeManager(this);
	connect(_invokeManager, SIGNAL(invoked(const bb::system::InvokeRequest&)),
					this, SLOT(onInvoked(const bb::system::InvokeRequest&)));

di dalam slot yang kita bisa mendapatkan keywords yang dimasukkan oleh user seperti ini:

void Quran::onInvoked(const bb::system::InvokeRequest& invokeRequest) {
if(invokeRequest.action() == "bb.action.SEARCH.EXTENDED") {
// send signal
emit doSearch(QString(invokeRequest.data()));
} else {
// some other invocation..
}
}

untuk mendapatkan keywords kita bisa memanggil invokeRequest.data() dan menjadikannya string sesuai kebutuhan kita. disini saya mengirim signan doSearch karena signal ini akan saya sambungkan dengan sebuah fungsi (slot) di qml untuk langsung melakukan pencarian. jangan lupa juga untuk mendifinisikan slot onInvoke (atau silahkan kasih nama sesuai keinginan) di header file.

Berikut screenshot setelah aplikasi dijalankan, dan kita melakukan pencarian dari sistem operasi (button search di home screaan BB10):

IMG_00000894

Tinggalkan komentar