طلبات البحث الرائجة

على غرار طلب اقتراحات البحث، للحصول على عرض واجهة مستخدِم "عمليات البحث الرائجة"، عليك أولاً الحصول على أداة إنشائها من خلال اتّباع الخطوات التالية:

  1. يجب السماح لفئة Activity المستهدَفة بتنفيذ واجهة GetSearchSuggestionsViewGeneratorCallback أو استخدام الفئة الداخلية المجهولة الهوية.
  2. إلغاء الطريقتَين onSuccess(SearchSuggestionsViewGenerator) وonError(String) في واجهة GetSearchSuggestionsViewGeneratorCallback
  3. أنشئ مثيلًا لفئة GetTrendingSearchesViewOptions باستخدام الحد الأقصى لعدد عمليات البحث الرائجة المحدّدة. (اختياري) يأخذ هذا العنصر أيضًا عنصر SearchSuggestionsViewOptions الذي يقدّم بعض الخيارات ل تخصيص مظهر واجهة مستخدم اقتراحات البحث.
  4. استدعاء دالة getTrendingSearchesView(GetTrendingSearchesViewOptions, GetSearchSuggestionsViewGeneratorCallback) في SearchInAppsService
  5. بعد الحصول على أداة إنشاء واجهة المستخدم، يمكنك التفكير في تخزينها في ViewModel لكي لا تحتاج إلى طلب أداة الإنشاء مرة أخرى عند الحاجة إلى إعادة إنشاء النشاط (مثلاً عندما تتغيّر الإعدادات أثناء تشغيل التطبيق).

نموذج التعليمات البرمجية

Java

package ...;

...
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.libraries.searchinapps.GetSearchSuggestionsViewGeneratorCallback;
import com.google.android.libraries.searchinapps.GetTrendingSearchesViewOptions;
import com.google.android.libraries.searchinapps.SearchInAppsService;
import com.google.android.libraries.searchinapps.SearchSuggestionsViewGenerator;
...

public class MainActivity extends AppCompatActivity implements GetSearchSuggestionsViewGeneratorCallback {
  private SearchInAppsService service;

  @Override
  public void onSuccess(SearchSuggestionsViewGenerator generator) {
    ...
  }

  @Override
  public void onError(String errorMessage) {
    ...
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    ...
    service = SearchInAppsService.create(this);
    // Uses the default SearchSuggestionsViewOptions.
    service.getTrendingSearchesView(
      new GetTrendingSearchesViewOptions().setMaxNumTrends(3), this);
    ...
  }

  @Override
  public void onDestroy() {
    service.shutDown();
    super.onDestroy();
  }
}

Jetpack Compose

package ...

...
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.platform.LocalContext
import com.google.android.libraries.searchinapps.GetSearchSuggestionsViewGeneratorCallback
import com.google.android.libraries.searchinapps.GetSearchSuggestionsViewOptions
import com.google.android.libraries.searchinapps.SearchInAppsService
import com.google.android.libraries.searchinapps.SearchSuggestionsViewGenerator
...

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      SearchSuggestionsUI()
    }
  }

  @Composable
  fun SearchSuggestionsUI() {
    ...
    var service by remember {
      mutableStateOf<SearchInAppsService?>(
        SearchInAppsService.create(LocalContext.current))
    }
    DisposableEffect(Unit) { onDispose { service?.shutDown() } }
    val callback =
            object : GetSearchSuggestionsViewGeneratorCallback {
              override fun onSuccess(generator: SearchSuggestionsViewGenerator) {
                ...
              }

              override fun onError(errorMessage: String) {
                ...
              }
            }
    // Uses the default SearchSuggestionsViewOptions.
    var options: GetTrendingSearchesViewOptions =
            GetTrendingSearchesViewOptions()
              .setMaxNumTrends(3)
    service?.getTrendingSearchesView(options, callback)
    ...
  }
}

تتشابه طريقة إضافة عرض واجهة المستخدم لعمليات البحث الرائجة إلى واجهة مستخدم التطبيق مع ميزة اقتراحات البحث.

الخطوة التالية: عرض نتائج البحث