안드로이드

[안드로이드] Broadcast 를 이용한 앱간 통신

IT꿈나무 2017. 4. 19. 17:54
반응형

  Broadcast 를 이용한 앱간 통신


1. 통신 규칙.

 BroadcastReceiver을 이용하여 통신 하며, MsgValueObject(Data bank)를 교환하여 통신한다.


요점.

1. BroadcastReciver를 이용하여 App간의 Msg를 교환 할 수 있다.

  (sendBroadcast(new intent()) 송신, BroadcastReciver 수신 에 사용 된다.)

2. BroadcastReciver의 Action Name(Key)을 공용으로 사용하여, 통신 채널의 port(Action Name)를 확보 한다. ( 다수의 App이 멀티 통신 할수 있게 된다.)

  (Action Name: com.jky.myapp.action.MY_APP_SIGNAL)

3. Msg Value Objet를 Intent에 감싸서 송수신 한다.

  (송신시에 intent.putExtra(“MyAppSignalVO”,new myAppSignalVO())/ 

    수신시에 myAppSignalVO vo =(myAppSignalVO) _i.getSerializableExtra(“MyAppSignalVO");)

4. Msg에 사용될 ValueObject구조체(데이터 뱅크 구조)를 통일 하여, 규격에 맞게 사용, 데이터를 교환하도록 한다.(Msg VO 참조)

5. 요청을 수신 받으면 그에 맞는 응답(Ack) 신호를 꼭 보낸다

(Msg Type이 request(요청) 이면, 그에 대한 응답 신호로 result(응답)을 보낸다.)


서술.‘

BroadcastReciver를 이용하여, MSG Data를 송수신 한다.

BroadcastReciver는 등록된 Key(Action Name)에 해당 하는 모든 Msg(Intent)를 수신 하는 특성을 갖고 있다.

이 특성을 이용하여 모든 myapp 관련 프로젝트는 동일한 Key(Action Name)를 갖는 BroadcastReciver를 이용함으로써 통신 Channer을 확보 할수 있고, app간의 공용 통신 Chnner을 활용함으로서 정보 교환이 유연해 진다, 또한 수신 된 MSG가 자신에게 보낸 메시지가 아닐 지라도 필요하다면 해당 메시지를 활용할수 있는 이점을 갖게 된다.


 송신(request)을 받으면 응답(request)를 꼭 송신국으로 보내 Ack를 확보한다.


 단 등록될 BroadcastReciver Class 및 MSG Value Object Class의 Package 를 com.jky.myapp.reciver 로 고정해야 한다.


 등록될 Action name 또한 com.jky.myapp.action.MY_APP_SIGNAL 으로 고정한다.



2. 구현 방법

패키지명: package com.jky.myapp.receiver;


 - 브로드 캐스트 리시버 (수신측)





- 브로드 캐스트 리시버 메니페스트 등록 




- 브로드 캐스트 송신 (송신측)




- MSG Value Object 규격




인텐트(Intent)란 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트를 가장 손쉽게 사용한 예로는 액티비티간의 화면전환을 들 수 있다.


반응형