2016-08-09 3 views
0

안드로이드에서 앱이 종료 (작업 관리자가 스 와이프)되었을 때 비콘을 듣고 싶습니다.Altbeacon 안드로이드 - 앱이 죽을 때 EnterRegion (배경이 아님)

저는 Appcelerator Titanium 5+를 사용 중이며 https://github.com/dwk5123/android-altbeacon-module 모듈을 사용하는 비콘에 사용하고 있습니다. 배경에있을 때 앱이 제대로 작동하지만 닫으면 앱이 정상적으로 작동하지 않습니다. Titanium에서 앱 서비스를 만드는 Altbeacon.setRunInService() 메소드를 시도했지만 작동하지 않는 것 같습니다.

나는 http://altbeacon.github.io/android-beacon-library/background_launching.html을 구현하기 위해 모듈을 수정하려고 시도했지만 티타늄이 빌드 프로세스에서이를 생성하기 때문에 애플리케이션 클래스에 액세스 할 수 없습니다. Application 클래스를 만들어 매니페스트에 추가하면 티타늄 앱 응용 프로그램 클래스를 덮어 쓰게되고 이 실행되지 않습니다. didDetermineStateForRegion, didEnterRegiondidExitRegion : 또한

는 모듈 클래스에서 "AndroidAltbeaconModuleModule"나는 BootstrapNotifier 인터페이스와 메소드를 구현하기 위해 노력했다. 그런 다음 onAppCreate 방법에 구현하는 시도 :

Region region = new Region("My Region", Identifier.parse(
"00000000-0000-0000-0000-000000000001"), null, null); 
regionBootstrap = new RegionBootstrap(this, region); 

하지만 thisregionBootstrap에 생성자는 정적하지 않고 그것에 대해 오류를 얻었다.

둘째, 비 정적 메서드를 만들고이 코드를 모듈에서 호출하려고했습니다. BootstrapNotifier 이벤트를 성공적으로 수신하지만 앱이 종료 된 경우 백그라운드에서만 수신 대기합니다. regionBootstrap이 Application 클래스의 onCreate 메서드에 없기 때문에이 작업이 수행됩니까? Using the AltBeacon library without extending ApplicationImplementing BootstrapNotifier on Activity instead of Application class도 확인했습니다.davidgyoung (Altbeacon 라이브러리 작성자)는 좋은 답변을 주었지만 티타늄으로 구현할 수는 없습니다.

이 응용 프로그램 기능으로 인해 응용 프로그램이 비컨을 감지하는 유일한 방법은 무엇입니까? 모듈에 JobService와 BroadcastReceiver를 구현하기 위해 약간의 노력을했지만 꽤 좋은 Java/Android 개발자가 아닙니다. 이 작업은 많은 시간이 걸릴 수 있습니다. 추가 아이디어가 있습니까? 그것을 공유하십시오 =)

미리 감사드립니다!

답변

0

나는 티타늄 전문가가 아니지만, 나는이 개 제안이 수행

  1. 당신이 만들 수를 이 확장한다는 Application 클래스 티타늄에 의해 생성하고 사용하도록의 AndroidManifest.xml을 수정 한 귀하의 응용 프로그램 클래스? 이 작업을 수행 할 수 있다면 클래스 onCreate 메서드에서 RegionBootstrap을 생성 한 다음 super.onCreate()를 호출하여 Titanium이 수행하는 작업을 실행하십시오.

  2. "AndroidAltbeaconModuleModule"내에 로직을 배치하는 유일한 방법은 백그라운드에서 앱을 시작할 때 모듈의 코드가 즉시 실행되는 것입니다 (예 : 전화가 시작될 때 RECEIVE_BOOT_COMPLETED를 수신 한 후). 이 시점에서 UI가 없습니다. 이것이 실제로 어떻게 작동하는지 알 수 있지만 가능하면 Titanium의 Android Context 객체에 액세스해야하며이 메서드를 사용하여 BootStrapNotifier의 모든 메서드를 구현하는 새 Java 원시 클래스를 생성해야합니다.

이 작업을 수행하는 다른 방법은 항상 있습니다. RegionBootstrap은 상대적으로 고통스럽지 않도록 설계되었습니다. 티타늄의 제약으로 인해 사용할 수 없다면 처음부터 수행하는 작업 중 일부를 빌드해야합니다. 의심 할 여지없이 적어도 네이티브 BroadcastReceiver을 작성해야합니다.

관련 문제