networking laboratory | - 자바 웹...
Post on 06-Apr-2020
0 Views
Preview:
TRANSCRIPT
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
1. Register
2. Register ID
3. Service Register
4. Result Service Register
5. User Register
6. Result User Register
8. Received Message
9. Read Message
7. Send Message
7-1. Send Message
Service Register Sequence Diagram
1. registerPushService
2. _registerPushUser
3. sendBroadcast
4. registerPushService
5. requestData
6. receivedData7. taskCompleted
8. sendBroadcast
UIUINotification
ManagerNotification
ManagerPushManagerPushManager PushHandlerPushHandler UPNSServiceUPNSService ReceiverServiceReceiverService
NetworkManagerNetworkManager
User Register Sequence Diagram
1. sendBroadcast
2. registerPushUser
3. requestData
4. receivedData5. taskCompleted
6. sendBroadcast
UIUINotification
ManagerNotification
ManagerPushManagerPushManager PushHandlerPushHandler UPNSServiceUPNSService ReceiverServiceReceiverService
NetworkManagerNetworkManager
Read Message Sequence Diagram
1. pushMessageReadConfirm
2. pushMessageReadConfirm
3. sendBroadcast
4. pushMessageReadConfirm
5. requestData
6. receivedData7. taskCompleted
8. sendBroadcast
UIUINotification
ManagerNotification
ManagerPushManagerPushManager PushHandlerPushHandler UPNSServiceUPNSService ReceiverServiceReceiverService
NetworkManagerNetworkManager
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
Sequence Diagram
DelegateDelegate PushManagerPushManager ReceiverReceiver ProviderProvider APNSAPNS
APNS Receive Sequence Diagram
DelegateDelegate PushManagerPushManager ReceiverReceiver ProviderProvider APNSAPNS
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 JSON
장점
1. 스키마(Schema)가 있어서 데이터 무
결성 검증 용이
2. 다양한 Data type 사용 가능
3. Xpath/Xquery를 사용하면 JSON보다
파싱이 용이함
1. 내용이 함축적이며 최소한의 정보만을
담는 구조로 XML 대비 용량 적음
2. Name/value의 간단한 Syntax 구조로
markup overhead가 없음
3. Javascript에서도 쉽게 사용 가능
단점
1. JSON에 비해 복잡하고 Overhead가
존재
2. 실 데이터가 아닌 tag 글자로 데이터
양 불필요하게 증가
1. 콤마가 누락되거나 중괄호가 잘못 닫
히는 등 오염에 취약함
2. Namespace 문제가 발생하는 경우가
종종 발생함
Receiving의 구현다량의 데이터를 한 번에 받는 경우
데이터를 받는 동안 Loading 필요
많은 이미지를 받는 경우 한 번에 Table에 넣는데 무리가 있음
데이터 일부를 받게 한 후, More를 이용하여 데이터를 추가로 받게 하는 것이 일반적임
Receiving의 실제 구현 More 구현을 위한 데이터 처리 방법
1. 처음 접속 시 1page 분량의 데이터를 서버에 요청
2. 요청한 데이터를 Device에서 받은 후 Array 형태로 데이터 저장
3. 사용자가 More 버튼을 터치하는 경우 다시 서버로 2page (다음 페이지) 데이터를 서버에 요청
4. 전송 받은 데이터를 기존 Array 데이터 뒤에 붙임
5. Table 객체는 Reload 메소드를 통해 화면을 새로 고쳐 추가데이터를 화면에 나타냄
top related