Client-Server Application
Client 어플리케이션개발및 Server 연동 Local Push Android: Started service, Bound service, Intent service ios: Local Notification Push Notification Android: Google Cloud Messaging (GCM) ios: Apple Push Notification Service (APNS) Data sending and Receiving JSON, XML
Android Started service 애플리케이션컴포넌트에의해론칭됨 백그라운드에서무한정실행됨 ( 자신을시작한것이없어지더라도 ) startservice() 메소드를이용하여시작하며, 완료후 stopself() 를호출하여중단 Bound service Started service 와유사하나, 바운스결과를자신에게반환하며자신을론칭한컴포넌트와상호작용도허용한다는것이다름 bindservice() 메소드를사용하여시작하며, 더이상필요하지않을시 unbindservice() 메소드를호출하여멈춤 Intent service Service 클래스의서브클래스이며, 편의클래스임 IntentService 클래스사용시각요청을실행하는 onhandleintent() 메소드만구현하면됨
ios: Local notification 백그라운드에있는애플리케이션이사용자에게메시지표시를하기위한로컬알림기능 원격알림 (Remote/Push notification) 기능과다르며, 원격서버에의존하지않고로컬애플리케이션에서실행가능 UIUserNotificationSettings 을통해알림형태, 소리등을설정하며, registerusernotificationsettings 을이용하여사용자에게퍼미션을요청함
ios: Local notification 로컬알림타입설정및사용자퍼미션요청코드
ios: Local notification 백그라운드로내려간후 10 초후알림을위한코드 schedulelocalnotification 으로알림설정
ios: Local notification ios 10 부터시뮬레이터에서는확인되지않음
ios: Local notification 예약된알림의취소 scheduledlocalnotifications 으로현재알림목록을얻음 cancellocalnotification: 각각의알림을취소 cancelalllocalnotifications: 예약된모든알림을취소
Android: Google Cloud Messaging (GCM) Push Notification Server(PNS) 기반메시지전송플랫폼 Uracle Push Message Center(UPMC) 를이용함 Android GCM 서버와 HTTP 프로토콜을이용하여서비스구현 UPMC 3.5 이하버전 initpushservice 토큰요청 User 등록 Service 등록 메시지수신 UPMC 3.6 이상버전 initpushservice Service 등록 ( 자동토큰요청 ) User 등록 메시지수신
Android: Google Cloud Messaging (GCM) DataFlow diagram 3. Service Register 5. User Register 8. Received Message 4. Result Service Register 6. Result User Register 9. Read Message 2. Register ID 7-1. Send Message 7. Send Message 1. Register
Service Register Sequence Diagram UI Notification Manager PushManager PushHandler UPNSService ReceiverService Network Manager 1. registerpushservice 2. _registerpushuser 3. sendbroadcast 4. registerpushservice 5. requestdata 8. sendbroadcast 7. taskcompleted 6. receiveddata
User Register Sequence Diagram UI Notification Manager PushManager PushHandler UPNSService ReceiverService Network Manager 1. sendbroadcast 6. sendbroadcast 2. registerpushuser 5. taskcompleted 3. requestdata 4. receiveddata
Read Message Sequence Diagram UI Notification Manager PushManager PushHandler UPNSService ReceiverService Network Manager 1. pushmessagereadconfirm 2. pushmessagereadconfirm 3. sendbroadcast 4. pushmessagereadconfirm 5. requestdata 8. sendbroadcast 7. taskcompleted 6. receiveddata
Android: Google Cloud Messaging (GCM) SDK 설정 MPushLibrary : GCM/UPNS Push 활용라이브러리 mcore.mobile.lic : Push 라이센스정보가담긴파일 Manifest.xml: Push 구동을위한설정이필요한파일 SDK 적용방법 Project 의 libs 폴더에 lib 추가 Assets/res 폴더에라이센스및설정추가
Android: Google Cloud Messaging (GCM) Push service 등록
Receiver 등록 Receiver 해제 http://www.evernote.com/l/ahg1pzprxlzhmozkxpmavlhdrjeo-e8on40/
ios: Apple Push Notification Service (APNS) Apple 에서제공하는영구적인보안채널에공급자를연결하여대상장치에알림을보낼수있는서비스 Apple APNS 서버와 TLS 인증으로연결된 APNS Provider 서버를사용 1. The app registers for push notifications (SSL 인증서생성및등록 ) 2. The OS asks APNS for a device token 3. The app receives the device token 4. The app sends the token to provider 5. The provider sends a push notification to the APNS Server 6. APNS sends the push notification to user app APNS 는메시지전송시 5. 6. 5. 6. 5. 6 을지속적으로반복
DataFlow diagram 1 부터 3 까지의구체화
Sequence Diagram
Delegate PushManager Receiver Provider APNS Sequence Diagram
APNS Receive Sequence Diagram Delegate PushManager Receiver Provider APNS
Registering for APNS
Receive a token from APNS server APNS server 로부터 64bites 문자열을받아옴
Provider server APNS 메시지전송을위한서버파일 (Server: jsp 코드 )
Receive the message from APNS server
Sending : Android and ios http request 사용 Form 문을사용하여전송
Sending : Android and ios 서버에서처리후그결과를다시전송 (Server : php)
Sending : Android and ios 전송결과를다시받아처리필요
Receiving : Android and ios JSON 데이터 JavaScript Object Notation (JSON) 클라이언트브라우저및 AJAX 사용웹서비스간에소량의데이터를신속히교환할수있는효율적인데이터인코딩형식 Key Value 코딩방식 Serialization( 일종의암호화 ) 데이터를서버에서전달하며, 클라이언트즉데이터를수신한 Device 에서는 JSON 모듈을사용하여 Deserialization 을한후사용 XML 데이터
Receiving : Android and ios JSON 데이터 XML 데이터 HTML 을획기적으로개선하여만든언어 웹에서구조화된문서를전송가능하도록데이터에의미를부여하는메타데이터를기술할목적으로만든다목적마크업언어 XML 파싱은 Library 화하여사용하는것이일반적임 XML JSON
Receiving : Android and ios JSON 데이터와 XML 데이터 장점 단점 XML 1. 스키마 (Schema) 가있어서데이터무결성검증용이 2. 다양한 Data type 사용가능 3. Xpath/Xquery 를사용하면 JSON 보다파싱이용이함 1. JSON 에비해복잡하고 Overhead 가존재 2. 실데이터가아닌 tag 글자로데이터양불필요하게증가 JSON 1. 내용이함축적이며최소한의정보만을담는구조로 XML 대비용량적음 2. Name/value 의간단한 Syntax 구조로 markup overhead 가없음 3. Javascript 에서도쉽게사용가능 1. 콤마가누락되거나중괄호가잘못닫히는등오염에취약함 2. Namespace 문제가발생하는경우가종종발생함
Receiving 의구현 다량의데이터를한번에받는경우 데이터를받는동안 Loading 필요 많은이미지를받는경우한번에 Table 에넣는데무리가있음 데이터일부를받게한후, More 를이용하여데이터를추가로받게하는것이일반적임
Receiving 의실제구현 More 구현을위한데이터처리방법 1. 처음접속시 1page 분량의데이터를서버에요청 2. 요청한데이터를 Device 에서받은후 Array 형태로데이터저장 3. 사용자가 More 버튼을터치하는경우다시서버로 2page ( 다음페이지 ) 데이터를서버에요청 4. 전송받은데이터를기존 Array 데이터뒤에붙임 5. Table 객체는 Reload 메소드를통해화면을새로고쳐추가데이터를화면에나타냄