Как я могу протестировать фоновое сканирование и запустить приложение в фоновом режиме с помощью iBeacon-Android?

Я использую профессиональную библиотеку.
Но я только что нашел документ для бесплатной библиотеки Я не могу найти ни одного документа для профессиональной версии.

Кроме того, я не знаю, как реализовать фоновый режим даже с использованием профессионального образца.

Вот шаги:

  1. Создайте профессиональный образец проекта
  2. запустите источник iBeacon (используя iPad), и его можно будет обнаружить
  3. запустите приложение, а затем нажмите кнопку «Домой», чтобы сделать его фоновым
  4. Отключить источник iBeacon
  5. Включите источник iBeacon
  6. Однако более 5 минут приложение не запускается

Итак, может ли кто-нибудь проверить мой шаг?
Как мне проще протестировать фоновый режим?

Кроме того, для BootstrapNotifier это работает только в первый раз, когда устройство перезагружается?
После этого, даже если я переведу приложение в фоновый режим, приложение не запустится при обнаружении iBeacon?


person jjLin    schedule 13.03.2014    source источник


Ответы (1)


Ваш метод тестирования звучит нормально. Я думаю, проблема в том, что эталонное приложение для профессиональной библиотеки автоматически запускает приложение только при первом обнаружении после загрузки. После этого вместо этого он отправляет уведомление, и нажатие на это уведомление запускает приложение.

Это чисто для демонстрационных целей. Вы можете изменить его на автоматический запуск при каждом обнаружении, если хотите. Просто измените логику haveDetectedIBeaconsSinceBoot в этом коде:

@Override
public void didEnterRegion(Region arg0) {
    // In this example, this class sends a notification to the user whenever an iBeacon
    // matching a Region (defined above) are first seen.
    Log.d(TAG, "did enter region.");
    if (!haveDetectedIBeaconsSinceBoot) {
        Log.d(TAG, "auto launching MainActivity");

        // The very first time since boot that we detect an iBeacon, we launch the
        // MainActivity
        Intent intent = new Intent(this, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // Important:  make sure to add android:launchMode="singleInstance" in the manifest
        // to keep multiple copies of this activity from getting created if the user has
        // already manually launched the app.
        this.startActivity(intent);
        haveDetectedIBeaconsSinceBoot = true;
    } else {
        // If we have already seen iBeacons and launched the MainActivity before, we simply
        // send a notification to the user on subsequent detections.
        Log.d(TAG, "Sending notification.");
        sendNotification();
    }


}

Ссылка на javadoc отсутствовала на основной странице документации, когда вы разместили этот вопрос. . Теперь это исправлено.

person davidgyoung    schedule 13.03.2014
comment
только что попробовал проигнорировать всю логику haveDetectedIBeaconsSinceBoot, все равно просто startActivity, а потом после выключения источника 10-15сек, потом включить, активность можно запускать. - person jjLin; 13.03.2014
comment
Я обновил ссылку JavaDoc: developer.radiusnetworks.com/ibeacon/android/pro/ javadocs - person davidgyoung; 13.03.2014