Sen MessageListener bildirimleri yerine Niyet almak için arka planda da abone olabilirsiniz. Arka plan taraması düşük güç taramasıdır, bu nedenle gecikme süresi çok uzun olabilir (işaretin algılanması için dakikalar bile olsa). Tarama, ekran üstü etkinlikte veya başka bir uygulama istediğinde gerçekleştirilir. Yani diğer uygulamaların taramalarından sonuç alırsınız.
GoogleApiClient'i, etkinlik içeriği yerine uygulama içeriğini kullanarak oluşturabilirsiniz. Bunu, BOOT_COMPLETED yayına tepki veren bir yayın alıcısından çağırın.
GoogleApiClient client = new GoogleApiClient.Builder(appContext)
.addApi(Nearby.MESSAGES_API, new MessagesOptions.Builder()
.setPermissions(NearbyPermissions.BLE)
.build())
.build();
client.connect();
istemcisi olabilir subscribe PendingIntent kullanılarak ve amaç kolları yayın alıcısı oluşturmak (ConnectionCallbacks arasında onConnected yöntemi) bağlandığında.
Yayın alıcısında, ön planda tarama olarak aynı MessageListener'ı kullanan Nearby.Messages.handleIntent yöntemini kullanarak kasıtlı olarak işlem yapabilirsiniz.
Bu yaklaşımla ilgili sorunlardan biri, yakındaki erişim izinleridir. Kullanıcının yakındaki erişimi onaylamasına izin vermek için kullanıcı arayüzüne ihtiyacınız var. Uygulamam, uygulamayı ilk kez açtığında ve izinleri kabul edene kadar arka plan taraması yapmak için beklemekti. Kabul edildikten sonra arka planda abone olabilirsiniz.