2016년 6월 11일 토요일

3GPP TS 23.040

2.1.2 Abbreviations
ACSE        Association Control Service Element
E.163        CCITT Recommendation E.163 (Blue Book)
E.164        CCITT Recommendataion E.164 (Blue Book)
SM MO     Short Message Mobile Originated
SM MT      Short Message Mobile Terminated
SM-AL       Short Message Application Layer
SM-LL        Short Message Lower Layer
SM-RL       Short Message Relay Layer
SM-RP       Short Message Relay Layer Protocol
SM-RS       Short Message Relay Service
SM-TL       Short Message Transfer Layer
SM-TP       Short Message Transfer Layer Protocol
SM-TS       Short Message Transfer Service
T.100        CCITT Recommendation T.100 (Blue Book)
T.101        CCITT Recommendation T.101 (Blue Book)
TPDU       Transfer protocol data unit
X.121       CCITT Recommendation X.121 (Blue Book)
X.400       CCITT Recommendataion X.400 (Blue Book)

3. Services and service elements
SMS는 GSM/UMTS MS와 SC를 경유하는 SME 사이에 단문 메시지를 전송하는 수단을 제공한다. SC는 MS와 SME 간의 메시지 전송을 통신(interworking)하거나 전달한다.

현 문서는 MS와 SC 사이의 단문 메시지만을 설명한다. 그러나 가능한 더 높은 레이어의 애플리케이션을 참조할 수도 있다.

3.1 Basic services

단문 메시지 서비스는 두 개의 기본 서비스로 구성된다:

SM MT (Short Message Mobile Terminated);
SM MO (Short Message Mobile Originated).

SM MT는 SC로부터 하나의 MS로 제출되는 단문 메시지를 전송하는 GSM/UMTS 시스템의 능력을 나타낸다. 그리고 이후 배달을 위해 특정 메커니즘을 가지고 delivery report나 ㄹfailure report를 이용해 단문 메시지의 배달에 대한 정보를 제공한다. ; figure 1을 보아라.


SM MO는 MS가 SC를 통해 하나의 SME로 제출한 단문 메시지를 전송하는 GMS/UMTS 시스템의 능력을 나타낸다. 그리고 단문 메시지의 배달 정보를 delivery report나 failure report를 통해 제공한다. 메시지는 SC가 결국 단문 메시지를 전달하고자 하는 SME의 주소를 포함해야 한다. ; figure2를 보아라.

활동하는 MS는 음성 콜이나 데이터 콜이 진행중인지에 상관없이 독립적으로 언제나 단문 메시지 TPDU(SMS-DELIVER)를 수신할 수 있을 것이다. report는 항상 SC로 리턴될 것이다; MS가 단문 메시지를 수신했다는 것을 확인(confirm)하거나 MS로 단문 메시지 TDPU를 전달하는 것이 불가능하다는 이유와 함께 SC에게 전달함으로써.

NOTE: 단문 메시지의 송신이나 수신이 MS의 상태변화와 동시에 일어날 때 즉. busy에서 idle로 idle에서 busy로 또는 핸드오버 중에 단문 메시지 전송이 중단될 수 있다.
또한 같은 OA 주소와 식별자(identification) 즉 message reference number(MO) 또는 Timestamp(MT)를 가진 두 단문 메시지가 차례로 수신될 수 있다. 그러한 상황은 RP 또는 CP 레이어의 오류(예를 들어 inter MSC 핸드오버 중에)에 기인할 수 있다. 그것은 중복 메시지이거나 유요한 새메시지일 수 있다.
그러므로 수신주체는 두번재 단문 메시지를 무시해야 할지 결정하기 위해 단문 메시지가 포함하는 다른 파라미터를 체크할 준비를 해야 한다.

3.2 Short Message Service elements

SMS는 메시지의 송 수신에 대해 7개 요소로 구성된다.

Validity-Period;
Service-Centre-Time_Stamp;
Protocol-Identifier;
More-Message-to-Send;
Priority;
Messages-Waiting;
Alert-SC.

3.2.1 Validity-Period
Validity-Period는 SC로 SMS-SUBMIT을 제출한 MS에게 단문 메시지에 있는 구체적인 기간 값을 포함하는 가능성을 주는 정보요소이다(TP-Validity-Period field, 9절을 보아라). TP-Validity-Period 파라미터 값은 단문 메시지가 유효한 기간을 가리키는 값이다. 즉 SC가 수신자로 전송이 수행되기 전에 SC 메모리상에 존재를 보장할 수 있는.

3.2.2 Service-Centre-Time-Stamp
Service-Centre-Time-Stamp는 SC가 SC의 SM-TL 엔터티에 단문 메시지가 도착한 시간을 수신 MS에게 알려주는 정보 요소이다. 시간값은 모든 SMS-DELIVER에 포함된다(TP-Service-Centre-Time_Stamp 필드, 9절을 보아라)MS로 전달되는

3.2.3 Protocol-Identifier
Protocol-Identifier는 SM-TL이 사용될 더 높은 수준의 프로토콜을 참조되거나 특정 타입의 통신 장치와 통신하는 것을 가리킨다.

Protocol-Identifier information 요소는 메시지 타입에 있는 특정 필드를 사용한다. RP-ACK를 위한 SMS-SUBMIT, SMS-SUBMIT-REPORT, RP-ACK를 위한 SMS-DELIVER, SMS-DELIVER-REPORT, SMS_STATUS_REPORT 그리고 SMS-COMMAND TP-Protocol-Identifer(TP-PID)

3.2.4 More-Message-to-Send
More-Messages-to_Send는 SC가 SC 내에 MS에 전달할 하나 이상의 메시지가 더 있다는 것을 알려주는 정보 요소이다. More-Messages-to-Send 정보 요소는 SMS-DELIVER 메시지에 있는 Blooean 파라미터를 사용한다. TP-More-Message_to_

3.2.5 Delivery of Priority and non Priority Messages
Priority는 SC나 SME가 제공하는 정보요소로 PLMN에게 메시지가 priority 메시지인지 가리키는데 사용된다.
non-priority 메시지의 배달은 MS가 임시로 부재한 것으로 인식되면 잠시동안만 부재로 인식되면 시도되지 않을 것이다(3.2.6절을 보아라).
non-priority 메시지의 배달은 MS가 임시 부재로 인식되지 않고 MS가 여유 메모리 공간을 갖고 있지 않은 것으로 인식되는 것과 상관없이(3.2.6절을 보아라).
priority 메시지의 배달은 MS가 임시 부재로 인식되든 메모리 공간이 부재하든 상관없이 시도될 것이다.

3.2.6 Messages-Waiting
Message-Waiting은 PLMN이  HLR, SGSN 그리고 VLR에게 MS로 전달될 originating SC에서 대기하고 있는 메시지가 있다는 정보가 받는쪽 MS와 연관되어 있음을 제공할 수 있게 하는 서비스 요소이다. 서비스 요소는 오직 임시 부재 모바일이나 MS 메모리 초과로 인한 이전의 성공적이지 않은 배달 시도의 경우에만 사용된다. 이 정보는 Messages-Waiting-Indication(MWI)로 나타내며 HLR에 있는 Messages-Waiting-Data(MWD), Mobile-station-Not-Reachable-for-GPRS(MNGR), Mobile-Station-Not-Reachable-Flag(MNRF), Mobile-Not-Reachable-Reason(MNRR) 그리고 Mobile-Station-Memory-Capacity-Exceeded-Flag(MCEF)로 구성된다; SGSN에 있는 Mobile-station-Not Reachable-for-GPRS(MNRG) 그리고 VLR에 있는 Mobile-Station-Not-Reachable-Flag(MNRF)
figure3이 예를 나타낸다.


MWD는 이전의 성공적이지 않은 메시지 배달 시도를 수행한 SCs의 주소(SC-Addr)의 리스트를 포함한다(5절을 보아라). MS로의 성공적이지 못한 배달 시도를 수행한 모든 SC로 alert message를 보내기 위해, HLR은 SC 주소의 참조와 함께 MSIsdn-Alert(3.2.7절을 보아라)를 저장할 것이다. HLR에 있는 적용되는 요구사항들은 GSM TS 03.08[6]에 명세되어 있다. 어떻게 HLR에게 SC와 MS 주소 정보가 제공되는지는 3GPP TS 29.002[15]에서 주어진다.

HLR내에 있는 Mobile-Station-Memory-Capacity-Exceeded-Flag(MCEF)는 MS로의 단문 메시지 전송 시도가 MS Memory Capacity Exceeded의 원인으로 실패한 경우는 TRUE 값을 갖고 아니면 FALSE 값을 갖는 Boolean 파라미터이다.

HLR과 SGSN 내에 있는 Mobile-station-Not Reachable-for-GPRS(MNRG)는 MS로의 단문 메시지 전송 시도가 Absent Subscriber의 원인으로 실패했다면 TRUE 값을 다른 경우에는 FALSE 값을 갖는 Boolean 파라미터이다(아래 Note1에 설명된 것은 제외하고)

HLR과 VLR에 있는 Mobile-Station-Not-Reachable-Flag(MNRF)는 리스트 MWD가 MS로의 단문 메시지 전송 시도가 Absent Subscriber의 원인으로 실패했기 때문에 하나 이상의 리스트 요소를 포함하고 있다면 TRUE 값을 갖고 다른 경우에는 FALSE 값을 갖는 Boolean 파라미터이다.

HRL에 있는 Mobile-Not-Reachable-Reason(MNRR)은 MSG, SGSN 혹은 그 두곳에서 Absent Subscriber의 이유로 MS로의 단문 메시지 배달시도가 실패했을 때 MS가 부재인 이유를 저장한다.

SM-TP Message

1.3 SM-TP 



7 6 5 4 3 2 1 0
RP UDHI SRR VPF RD MTI
0 1 1 0 0 0 0 1


1.3.1 Rules for Sending SMS


1.3.1.1. TP-Reply-Path(TP-RP, RP)

수신된 메시지에 대한 응답을 보내야 하는 경우.
일반적으로 MS에서 발송하는 메시지가 아니라 특정 서버에서 특정 목적으로 이용된다.(설문용)



1Bit
0 : 응답을 보내는 메시지가 아니다.
1 : 응답을 보내는 메시지이다.

메시지를 보낼때, Reply-Path 기능은 지원해서는 한된다(Must not). 항상 "0"으로 지정되어야 한다(must, not specified).
TP-RP를 "1"로 (specified) 셋팅함으로써 SMS 메시지에 대한 응답을 보낼때 SMS-DELIVER의 RP-OA(Service Center Address)가 SMS-SUBMIT의 RP-OA를 위해 셋팅되어야 한다(MUST). 그러나 이 기능은 선택적이다(optional). 만약 장치가 이 기능을 지원하지 않는다면(TP-RP=1로 응답하기), 장치는 평상시대로 RP-OA에 SMSC 번호를 셋팅함으로써 응답해야 한다(MUST). 더 자세한 사항은 [3GPPTS23.040] Annex D를 참조하시오.

1.3.12. TP Status Report Request(TP-SRR)

내가 보내는 메시지에 대한 응답을 요청하는 플래그, 즉 SMS-STATUS-REPORT를 보내 달라는 의미

장치는 보낸 메시지의 delivery report의 요청 여부를 지정하 ㄹ수 있는 UI를 가져야 한다(SMS-STATUS-REPORT). "1"은 요청하는 것이고 "0"은 요청하지 않는 것이다. 기본값은 "0"으로 셋팅되어야 한다(MUST).

국산폰은 사용안하는 필드.

1.3.1.3. TP Message Reference(TP-MR)

내가 발송하는 메시지에 대한 고유 ID
만일 고유한 ID가 없을 경우 메시지에 대한 중복 여부를 알 수 없을 뿐만 아니라 SMS-SUBMIT에 대한 SMS-SUBMIT-REPORT가 왔을 때 어떤 메시지에 대한 응답인지 알 수 없다. 그러므로 해당 메시지의 id는 꼭 필요하다.
안드로이드에서는 0으로 셋팅하고 발신할 때마다 SIM에 MR을 저장한다. 즉 SIM에는 초기 값이 있고 그 값을 1++ 하여 MR이 생성된다. (단말 기준으로 RIL에서 만듦)

장치가 메시지를 보낼 때마다, 메시지에 고유한 번호를 할당해야 한다(MUST).
TP-Message-Reference 값을 위해, 장치는 마지막으로 사용된 (U)SIM의 EFSMSS([3GPPTS31.102]에 정의)에 저장된 TP-MR 값(0-255) 을 참조하여 1씩 증가해가면서 사용한다.

1.3.1.4. TP Destination Address(TP-DA)

목적지에 대한 주소

TP-DA 는 메시지가 보내져야 하는 목적지 주소를 지정한다.(international setting을 포함하여("+")를 추가하여). 그러나 지정될 수 있는 주소는 장치로만 한정되며 e-mail 주소로는 전송될 수 없다. Type-Of-NUmber 와 Numbering-Plan-Identification은 [3GPPTS23.040] 9.1.2.5에 정의된 값들을 준수해야 한다. RP-DA 는 다음과 같다.


Pressed key TON NPI
"+" International E164/ISDN
"0-9" Unknown E164/ISDN
Other than the above(*, #, etc.) Unknown Unknown

1.3.1.5. TP Protocol Identifier(TP-PID)

해당 Protocol의 용도에 해당한다. 안드로이드는 발송시 모두 0으로 셋팅한다.
모두 0이란 의미는 일반적인 용도 즉 SME<->SMSC 간 메시지를 주고 받는 Protocol이란 뜻이다.

(U)SIM reference가 OFF 이면, TP-PID 는 (0x00)이어야 한다(MUST). 다른 경우에는 [3GPPTS23.040]을 준수해야 한다(MUST).

1.3.1.6. TP Data Coding Scheme(TP-DCS)

데이터 코딩 방식을 의미한다.

TP-DCS는 "General Data Coding Indication" 이어야 하며(MUST) "No Message Class"를 사용해야 한다(MUST)([3GPPTS23.038]을 참고해라)
*GSM 7Bit-0x00/UCS2-0x08

1.3.1.7. TP User-Data(TP-UD)

UI에서 생성되고 보내져야하는 메시지가 셋팅된다. 최대 사이즈는 140 바이트 이어야 하고(MUST) Concatednated Short Message를 보내는 것은 지원되어서는 안된다(MUST).
만약 수신 메시지가 응답하고 이동하는 등에 사용된다면 사이즈는 140 바이트이거나 그보다 작아야 한다(MUST)(concatenation은 허용안됨).

해당되는 character code set은 GSM 7bit 그리고 USC2가 지원되어야 한다mandatory).

1.3.1.8. TP-Failure-Cause(TP-FCS)

장치는 네트웍으로부터의 SMS-SUBMIT-REPORT의 TP-FCS의 값에 따라 에러를 표시해야 한다(MUST).
*그러나 안드로이드와 애플리케이션의 표준 규격은 허용된다.

1.3.1.9. Optional Parameters

만약 SMS-SUBMIT-REPORT(TP-User-Data와 관련하여)의 선택적인 파라미터가 셋팅되어 있다면, 그것들은 보여져야 한다(MUST).


1.3.2 Rules for Receiving SMS

1.3.2.1. TP-Failure-Cause(TP-FCS)

장치는 TP-FCS의 값에 부합시켜 에러를 보여주어야 한다(MUST).
* 그러나 안드로이드와 앱의 표준 규격은 허용된다.

1.3.2.2. TP-More-Message-to-Send(TP-MMS)

SMSC에 메시지가 더 있다면(cacatenated message를 포함하여) "0"이 셋팅되어야 한다(MUST). 메시지가 더 없다면 "1"이 셋팅되어야 한다(MUST).

1.3.2.3. TP-Reply-Path(TP-RP)
이 파라미터에 일치하는 메시지에 대한 응답에 대한 규격("specified"=1/"not specified"=0)

1.3.2.4. TP-Originating-Address(TP-OA)

TP-OA는 UI 상에 originating address로 사용된다. 장치는 만약 폰북에 매치하는게 있다면 memory dial과 이름 표시를 위해 폰북을 참조해야 한다(MUST). 만약 일치하는게 없다면 장치는 TON/NPI에 상관없이 번호를 표시해야 한다(MULST). 만약 "TNON"이 "International"로 셋팅되어 있으면, "+"가 표시되는 주소에 추가되어야 한다. 만약 BCD number("a", "b", "c", "*", "#")가 셋팅되어 있으면, 디스플레이는 가능해야 하지만(MUST) 응답은 ("a", "b", "c)를 위해 가능해서는 안된다(MUST) 그리고 ("*", "#")의 경우는 디스플레이와 응답이 모두 가능해야 한다(MUST).
만약 GSM7Bit(alpha-numeral)이 셋팅되어 있으면, 디스플레이는 가능하지만 응답이 가능해서는 안된다(MUST).

1.3.2.5. TP-Protocol Identifier(TP-PID)

SMS를 수신했을 때 다음의 TP-PID는 지원되어야 한다(MUST)(mandatory).
- Implicit: SMS-SME protocol (0x00)
- Short Message Type 0 (0x00)

다른 TP-PID 값의 지원은 선택적이다. 만약 장치가 지원하지 않는 TP-PID가 셋팅되어 있는 sms를 수신한다면, [3GPPTS23.040]에 따라 "00 00 00 00"값으로 지원하지 않는 값을 해석해야 한다.
OTA/USAT 기능은 구현되어야 한다(MUST). 만약 PID=0x7C가 OTA/USAT 기능을 지원하지 않거나 OTA/USAT 기능이 구현되지 않은 단말로 전달되면, 장치는 TP-FCS=0xB)/RP-Cause=0x6F를 리턴해야 한다(MUST). OTA/USAT 기능의 경우 [GTR-USIM]을 참조해라.

1.3.2.6. TP Data Coding Scheme (TP-DCS)

[3GPPTS23.038]에 정의된 SMS Data Coding Scheme은 지원되어야 한다(MUST)
*만약 장치가 지원하지 않는 Message Class를 수신하는 경우, 장치는 지원하지 않는 Message Class를 "No Message Class"로 해석하고 SMS 메시지를 메모리에 저장해야 한다(MUST).

1.3.2.7. TP User-Data(TP-UD)

1.3.2.7.1 Information Element Identifier(IEI)

SMS를 수신했을 때, 다음 IEI가 지원되어야 한다(MUST).
- Concatenated Short message, 8-bit reference number
- Application port addressing scheme, 16bit address
- (U)SIM Toolkit Security Headers
다른 IEI의 지원 여부는 선택적이다. 그러나 만약 장치가 "Enhanced Messasging Service" IEI를 지원한다면 장치는 지원할 수 없는 데이터("User Data Header"절에 있는 "Enhanced Message Service"를 위한 IEI, IEDL, 그리고/또는 IED)를 무시해야한다(MUST). 그러나, 장치가 "Text Formatting" IEI를 지원할 때에는 text가 보여져야 한다(MUST).
추가적으로, 장치가 다른 지원하지 않는 IEI가 셋팅된 메시지를 수신했을 때, 장치는 그 IEI, IEDL, 그리고 IED를 [3GPPTS23.040에 정의된 데로 무시해야 하고 다음 IEI로부터 절차를 재개 해야 한다.(MUST).

1.3.2.7.2 Optional Parameters

SMS-DELIVER-REPORT((TP-User-Data와 관련하여)에 선택적 파라미터는 셋팅되어서는 안된다(MUST).

1.3.2.8. Message Waiting Information

장치는 MWI 노티피케이션을 통해 MWI pictogram을 끄고 켜는 것을 지원해야 한다(MUST).

VMS MWI 노티피케이션의 ON/OFF를 위해 "Messaging Waiting Indication Group: Discard Message"가 지정되어야 한다(MUST). MWI pictogram은 "Voicemail Message waiting"의 "Set Indication Active/Inactive"를 통해 ON/OFF 되어야 한다(MUST). 자세한 사항은 아래를 보시오.


장치는 "MWI ON" SMS를 수신하자 마자 pictogram을 ON 해야 한다(MUST). 장치는 "MWI OFF" SMS 를 수신할 때까지 pictogram ON 상태를 유지해야 하고(MUST) SMS를 수신했을 때 OFF시킨다.
MWI를 ON/OFF 하는데 사용되는 SMS 메시지는 장치의 수신메시지 저장공간에 저장되어서는 안된다.(MUST)
("SMS Data Coding Scheme"은 위에서 본바와 같이 "Discard message"이므로 SMS 메시지는 저장하지 않고 pictogram을 ON/OFF 시킨다. 장치는 SMS  메모리가 풀 상태에서도 SMS 메시지를 수신할 수 있어야 한다(MUST). Ringtone은 "MWI OFF" SMS가 수신되었을 때 플레이되어서는 안된다(MUST).

"UI All Reset" 기능이 실행되었거나 다른 (U)SIM이 삽입되었을 때, VMS MWI pictogram은 OFF 되어야 한다.
(이전 USIM이 다시 삽입되더라도 MWI pictogram은 다시 보여져서는 안된다(MUST).
만약 장치가 non-VMS MWI를 수신받는 다면, 장치는 pop-up 메시지를 보여주어야 하고(MUST) 메시지 텍스트를 보여줄 수 있어야 한다. 그러나 장치는 pictogram을 ON 하거나 SMS 메모리를 메모리 상에 저장해서는 안된다(MUST).

1.4 Resending SMS Procedures


1.4.1 Rules for Sending SMS


GTR-SMS-00007
장치가 SMS를 전송하는 시점에 SMS-SUBMIT을 보낼때, 장치는 3번 이상 재시도 해서는 안된다(MUST).
3번까지 재전송이 허락된다.
Priority: Must
Cagegory: Cat1, Open Market, Cat1.5, Cat2, Foreign Device
Device: Smartphone, Feature Phone, Module, Tablet

1.4.2 Rules for Receiving SMS


GTR-SMS-0008
장치가 SMS를 수신받는 시점에 DELIVER-REPORT를 보낼 때



2016년 4월 4일 월요일

앱을 위한 자동 백업 설정하기

Configuring Auto Backup for Apps

사용자들은 그들이 좋아하는 방식으로 앱을 설정하는데 시간과 노력을 투자한다. 새로운 장치로 변경하는 것은 모든 중요한 설정들을 무효화할 수 있다. target SDK version 이 안드로이드 6.0(API level 23) 이상인 앱으 경우 안드로이드 6.0이상을 실행하는 장치들은 자동적으로 앱 데이터를 클라우드로 백업한다. 시스템은 기본으로 거의 모든 앱 데이터에 대해 자동 백업을 수행한다. 그리고 이것은 당신이 추가적인 앱 코드를 작성할 필요가 없다.
Users frequently invest time and effort to configure apps just the way they like them. Switching to a new device can cancel out all that careful configuration. For apps whose target SDK version is Android 6.0 (API level 23) and higher, devices running Android 6.0 and higher automatically back up app data to the cloud. The system performs this automatic backup for nearly all app data by default, and does so without your having to write any additional app code.
Note: 사용자 프라이버시를 보호하기 위해 장치 사용자는 자동 백업이 동작하는 구글 서비스에 동의해야 한다. 구글 서비스 동의 다이얼로그는 사용자가 셋업 위자드를 거쳐가거나 장치의 첫 구글 계정을 설정할 때 나타난다.
To protect user privacy, the device user must have opted in to Google services for Auto Backup to work. The Google services opt-in dialog appears when the user goes through the Setup Wizard or configures the first Google account on the device.
사용자가 새로운  새로운 장치에 당신의 앱을 설치하거나 하나의 장치에 당신 앱을 재설치할 때(예를 들어 공장 초기화 이후) 시스템은 자동적으로 클라우드로 부터 앱 데이터를 복구한다. 이 수업은 어떻게 앱 특성을 위한 자동 백업을 설정하고 기본 동작은 무엇이며 어떻게 백업을 원치않는 데이터를 시스템이 제외하는지에 대한 정보를 제공한다.
When a user installs your app on a new device, or reinstalls your app on one (for example, after a factory reset), the system automatically restores the app data from the cloud. This lesson provides information about how to configure the Auto Backup for Apps feature, explaining its default behavior and how to exclude data that you don't want the system to back up.
자동 백업 특성은 당신의 앱이 사용자 장치에 생성한 데이터를 구글 드라이브 계정에 올리고 암호화하여 보존한다. 데이터 저장을 위해 당신이나 사용자는 어떤 변경도 필요없으며 저장된 데이터는 사용자의 개인 구글 드라이브 용량에 포함되지 않는다. 각 앱들은 25MB까지 저장할 수 있고 백업된 데이터가 25MB에 도달하면 더 이상 데이터를 클라우드로 보내지 않는다. 만약 시스템이 데이터 복구를 수행하는 경우, 앱이 마지막으로 클라우드에 보낸 데이터 스탭샷을 사용한다.
The automatic backup feature preserves the data your app creates on a user device by uploading it to the user’s Google Drive account and encrypting it. There is no charge to you or the user for data storage, and the saved data does not count towards the user's personal Google Drive quota. Each app can store up to 25MB. Once its backed-up data reaches 25MB, the app no longer sends data to the cloud. If the system performs a data restore, it uses the last data snapshot that the app had sent to the cloud.
자동 백업은 다음의 상태가 충족될 때 발생한다.
Automatic backups occur when the following conditions are met:
  • The device is idle.
  • The device is charging.
  • The device is connected to a Wi-Fi network.
  • At least 24 hours have elapsed since the last backup.

Configure Data Backup


장치가 안드로이드 6.0 이상에서 실행될 때 장치의 기본 동작은 앱이 생성한 거의 모든 데이터를 백업하는 것이다. 예외는 자동적으로 제외된 데이터 파일들이다. 이 절은 시스템이 백업할 데이터를 제한하고 설정하기 위해 어떻게 app manifest의 셋팅을 사용하는지 설명한다.
On devices running Android 6.0 (API level 23) or higher, the default system behavior is to back up almost all data that an app creates. The exception is automatically excluded data files. This section explains how you can use settings in your app manifest to further limit and configure what data the system backs up.

Including or excluding data

당신 앱이 필요로하는 데이터와 그것을 저장하는 방법에 따라 당신은 특정 파일이나 디렉토리를 포함하거나 배제하는 등의 구체적인 규칙을 셋팅할 필요가 있을 것이다. 앱을 위한 자동 백업은 당신이 이들 백업 규칙을 app manifest 를 통해 설정 가능케한다. 거기에 당신은 backup scheme configuration XML 파일을 지정한다. 예를 들어:
Depending on what data your app needs and how you save it, you may need to set specific rules for including or excluding certain files or directories. Auto Backup for Apps lets you set these backup rules through the app manifest, in which you specify a backup scheme configuration XML file. For example:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.my.appexample">
    <uses-sdk android:minSdkVersion="23"/>
    <uses-sdk android:targetSdkVersion="23"/>
    <application ...        android:fullBackupContent="@xml/mybackupscheme">
    </app>
    ...</manifest>
이 예제에서 android:fullBackupContent 속성은 mybackupscheme.xml이라는 XML 파일을 지정했다. 파일은 res/xml 디렉토리에 위치하고 있다. 이 설정파일은 어떤 파일들이 백업될지 제어하는 규칙을 포함한다. 다음 예제 코드는 특정 파일, device_info.db를 제외하는 설정 파일을 보여준다.
In this example, the android:fullBackupContent attribute specifies an XML file called mybackupscheme.xml, which resides in the res/xml/ directory of your app development project. This configuration file contains rules controlling which files are backed up. The following example code shows a configuration file that excludes a specific file, device_info.db:
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <exclude domain="database" path="device_info.db"/>
</full-backup-content>

Automatically excluded data files

대부분의 앱들은 모든 데이터를 백업할 필요가 없으며 사실상 그렇게 해서는 안된다. 예를 들어 시스템은 임시 파일과 캐시를 백업해서는 안된다. 이러한 이유로 자동 백업 서비스는 기본으로 특정 데이터 파일을 제외한다.
Most apps do not need to, and in fact should not, back up all data. For example, the system should not back up temporary files and caches. For this reason, the automatic backup service excludes certain data files by default:
  • getCacheDir() 와 getCodeCacheDir() 메소드가 참조하는 디렉토리에 들어있는 파일들.
    Files in the directories to which the getCacheDir() and getCodeCacheDir() methods refer.
  • 외부 저장소에 위치하는 파일들, 그것들이 getExternalFileDir() 메소드가 참조하는 디렉토리에 위치하지 않는 한
    Files located on external storage, unless they reside in the directory to which the getExternalFilesDir()method refers.
  • getNoBackupFileDir() 메소드가 참조하는 디렉토리에 위치하고 있는 파일들
    Files located in the directory to which the getNoBackupFilesDir() method refers.

Backup Configuration Syntax

백업 서비스 설정은 당신이 어떤 파일들을 백업으로 부터 포함하고 제외할 것인지 지정할 수 있도록 한다. 데이터 백업 설정 XML 파일의 문법은 다음과 같다:
The backup service configuration allows you to specify what files to include or exclude from backup. The syntax for the data backup configuration XML file is as follows:
<full-backup-content>
    <include domain=["file" | "database" | "sharedpref" | "external" | "root"]
    path="string" />
    <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
    path="string" />
</full-backup-content>
다음의 요소들과 속성들은 백업으로부터 포함될 파일들과 제외될 파일들을 명세하고 있다.
The following elements and attributes allow you to specify the files to include in, and exclude from, backup:
  • <include>: 기본으로 시스템이 당신 앱의 모든 데이터를 백업하는 것 대신에 백업할 리소스들의 집합을 명세한다.  만약 <include> 요소를 명세하면 시스템은 오직 이 요소에 명세된 리소스들만을 백업한다. 당신은 복수의 <include> 요소들을 사용하여 백업할 여러 집합의 리소스를 명세할 수 있다.
    Specifies a set of resources to back up, instead of having the system back up all data in your app by default. If you specify an <include> element, the system backs up only the resources specified with this element. You can specify multiple sets of resources to back up by using multiple <include> elements
  • <exclude>:  전체 백업시에 시스템이 제외시킬 데이터를 지정한다. 만약 당신이 <include>와 <exclude> 요소 두개에 동일한 집합의 타겟을 설정했다면 <exclude>가 우선권을 가질 것이다.
    Specifies any data you want the system to exclude when it does a full backup. If you target the same set of resources with both the <include> and <exclude> elements, <exclude> takes precedence.
  • domain:백업에서 포함하거나 제외하고자 하는 리소스의 타입을 지정한다. 이 속성들의 유효한 속성들은 다음을 과 같다:
    Specifies the type of resource you want to include in, or exclude from, backup. Valid values for this attribute include:
    • root: 앱의 루트 디렉토리에 있는 리소스를 명세한다.
      Specifies that the resource is in the app’s root directory.
    • file: getFilesDir() 메소드가 리턴하는 디렉토리에 있는 리소스
      Specifies a resource in the directory returned by the getFilesDir() method.
    • database: getDatabasePath() 메소드가 리턴하거나 앱이 SQLiteOpenHalper 클래스를 통해 상호작용하는 데이터베이스를 지정한다.
      Specifies a database that the getDatabasePath() method returns, or that the app interacts with via the SQLiteOpenHelper class.
    • sharedpref: getSharedPreferences() 메소드가 리턴하는 SharedPreferences 객체를 지정한다.
      Specifies a SharedPreferences object that the getSharedPreferences() method returns.
    • external: 외부 저장소에 있는 리소스를 지정한다. 그리고 getExternalFilesDir() 메소드가 리턴하는 디렉토리에 있는 파일에 대응한다.
      Specifies that the resource is in external storage, and corresponds to a file in the directory that the getExternalFilesDir() method returns.
  • path: 백업에 포함하거나 제외시키길 원하는 리소스의 파일 패스를 지정한다.
    Specifies the file path to a resource that you want to include in, or exclude from, backup.

Disabling data backups

manifest의 app요소에 있는 android:allowBackup 속성을 false로 셋팅하여 모든 앱 데이터가 자동 백업되지 않도록 선택할 수 있다. 이 셋팅은 다음 예제가 나타내고 있다.
You can choose to prevent automatic backups of any of your app data by setting the android:allowBackupattribute to false in the app element of your manifest. This setting is illustrated in the following example:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.my.appexample">
    <uses-sdk android:minSdkVersion="23"/>
    <uses-sdk android:targetSdkVersion="23"/>
    <application ...        android:allowBackup="false">
    </application>
    ...</manifest>

Support Lower Versions of Android


6.0 버전이하의 안드로이드 버전을 지원할 필요가 있는 두가지 시나리오가 있다. 당신은 당신의 존재하는 앱이 안드로이드 6.0의 자동 백업 기능의 이점을 취하도록 업데이트 할 것이다. 이전 버전의 안드로이드를 계속 지원해 가면서. 또는 새로운 앱을 릴리즈할 것이다. 그러나 안드로이드 6.0 이전 버전에서도 돌아가고 백업 기능을 갖길 원한다.
There are two scenarios in which you may also need to support versions of Android lower than 6.0 (API level 23): You may be updating your existing app to take advantage of the new auto backup functionality in Android 6.0, while wanting to continue supporting earlier versions of Android. Or you may be releasing a new app, but want to make sure devices running on versions of Android predating 6.0 also have backup functionality.

Updating an existing app to support auto backup

Earlier versions of Android supported a key/value-pair-based backup mechanism, in which the app defines a subclass of BackupAgent and sets android:backupAgent in its app manifest. If your app used this legacy approach, you can transition to full-data backups by adding the android:fullBackupOnly="true" attribute to the <application/> element in the manifest. When running on a device with Android 5.1 (API level 22) or lower, your app ignores this value in the manifest, and continues performing backups in the previous manner.
Even if you’re not using key/value backups, you can still use the approach described above to do any custom processing in onCreate() or onFullBackup(). You can also use that approach to receive a notification when a restore operation happens in onRestoreFinished(). If you want to retain the system's default implementation of XML include/exclude rules handling, call super.onFullBackup().

Giving your new app support for lower versions of Android

If you are creating a new app that targets Android 6.0, but you also want to enable cloud backup for devices running on Android 5.1 (API level 22) and lower, you must also implement the Backup API.

Test Backup Configuration


Once you have created a backup configuration, you should test it to make sure your app saves data and can restore it properly.

Enabling Backup Logging

To help determine how the backup feature is parsing your XML file, enable logging before performing a test backup:
$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE

Testing Backup

To manually run a backup, first initialize the Backup Manager by executing the following command:
$ adb shell bmgr run
Next, manually back up your application using the following command. Use the <PACKAGE> parameter to specify the package name for your app:
$ adb shell bmgr fullbackup <PACKAGE>

Testing restore

To manually initiate a restore after the system has backed up your app data, execute the following command, using the <PACKAGE> parameter to specify the package name for your app:
$ adb shell bmgr restore <PACKAGE>
Warning: This action stops your app and wipes its data before performing the restore operation.
You can test automatic restore for your app by uninstalling and reinstalling your app. The app data is automatically restored from the cloud once the app installation is complete.

Troubleshooting backups

If backup fails, you can clear the backup data and associated metadata either by turning backup off and on inSettings > Backup, factory-resetting the device, or executing this command:
$ adb shell bmgr wipe <TRANSPORT> <PACKAGE>
You must prepend com.google.android.gms to the <TRANSPORT> value. To get the list of transports, execute the following command:
$ adb shell bmgr list transports

Handle Google Cloud Messaging


For apps that use Google Cloud Messaging (GCM) for push notifications, backing up the registration token that Google Cloud Messaging registration returned can cause unexpected behavior in notifications for the restored app. This is because when a user installs your app on a new device, the app must query the GCM API for a new registration token. If the old registration is present, because the system had backed it up and restored it, the app doesn't seek the new token. To prevent this issue from arising, exclude the registration token from the set of backed-up files.

2016년 1월 13일 수요일

[2]Sending out an SMS in text mode

Sending out an SMS in text mode

THIS POST WAS WRITTEN BY JEROEN ON JANUARY 8, 2009
POSTED UNDER: SMS
This entry is part 1 of 17 in the series Sending out an SMS
이전 글에서 GSM 모뎀이 PC로부터 SMS message를 전송하게 해줄 수 있다고 설명한 것처럼 이것을 수행하는데 두가지 방식이 있다: text mode와 PDU mode.
As explained in a prevous post in this series, a GSM modem can let you send SMS messages from a PC. There are two basic ways to do this: text mode and PDU mode.
당신은 하이퍼터미널(윈도우 XP에는 딸려오지만 윈도우 비스타에는 없다)과 같은 터미널 프로그램을 가지고 GSM 모뎀을 즐길수 있다. 모뎀과 연결되었을 때 터미널 윈도우에서 내가 언급했던 명령들이 입력될 수 있다. 다음의 기본적인 명령들을 테스트해보고 어떤 모뎀이든지 이것들은 지원해야 한다:
You can play around with your GSM modem using a terminal program like HyperTerminal (which came with Windows XP, but is no longer there in Windows Vista). The commands I mention can just be entered in the terminal window when connected to the modem. You can try the following basic commands, any modem should support these:
ATIReturns general modem identification
ATD<phone number>Dials the phone number you supplied (don’t enter the <> brackets)
ATHHang-up the phone (useful after the previous command).
다음의 명령들은 GSM 모뎀들에만 한정된 것이다. 만약 에러 응답을 받는다면(예를 들어. '+ERR'), 당신의 모뎀은 아마도 GSM 모뎀이 아니거나 GSM 모뎀을 위한 확장을 지원하지 않는 것이다.
The following commands are specific for GSM modems. If you get an error response (e.g. ‘+ERR’), your modem probably isn’t a GSM modem or it doesn’t support the extensions specific for GSM modems.
AT+CGMIReturns the modem’s manufacturer
AT+CGMMReturns the modem’s model

당신의 GSM 모뎀에 의해 지원되는 모드가 어떤 것인지 알아내는 명령은 'AT+CMGF=?'이다. 이 스트링을 모뎀으로 보내면(뒤에 줄바굼을 입력하고) 폰은 PDU 모드를 위한 '0'과 TEXT 모드를 위한 '1' 또는 두 모드를 다 지원하면 '0,1'로 응답할 것이다.
 The command to find out which of the modes are supported by your GSM modem is ‘AT+CMGF=?’. Send this string to your modem (followed by a newline) and the phone will answer ‘0’ for PDU mode and ‘1’ for text mode or ‘0,1’ if it supports both modes.
만약 당신이 SMS 메시지를 text 모드에서 전송하고자 한다면 모뎀이 그 모드를 지원하는 것이 필요하고 당신은 모뎀이 먼저 text 모드에 있는지 확인할 필요가 있다. 명령 'AT+CMGF?'는 어떤 모드가 현재 활성화되어 있는지 알려줄 것이다. 명령 'AT+CMGF=1'은 text 모드로(만약 지원한다면) 모드를 셋팅할 것이다.
If you want to send an SMS message in text mode your modem needs to support it and you need to make sure the modem is in text mode first. The command ‘AT+CMGF?’ will tell you which mode is currently active. The command ‘AT+CMGF=1’’ will set the mode in text mode (if supported).
text 모드에서 text 메시지를 보내는 것은 쉽다. 명령은:
In text mode sending a text message is easy. The command is:
AT+CMGS=<phone-number><CR>
Text to be sent<Crtl-Z>
<CR> 과 <Ctrl-Z>은 각각 엔터 키와 Ctntrol-Z 키와 연결된다. 캐릭터셋과 관련된 몇몇 세부사항들이 있지만 alpha-numeric text(accents나 특수 문자 없이)로 한정한다면 기대하는 바데로 동작해야 한다.
The <CR> and <Ctrl-Z> refer to the enter key and the Control-Z key combination respectively. There are some details regarding character sets, but if you stick to normal alpha-numeric texts (without accents or special characters), it should work as expected.
A followup post will elaborate a little more on text mode.
Series Navigation
TAGS: , , 

Reader Comments


hi. does anybody know which models support sending messages in text mode?
#1 

WRITTEN BY EMIX ON MAY 9TH, 2009 @ 2:38 AM

very helpful! I tried it on a Siemens TC65 gsm modem and it works. One note: I think you have misspelling error: it should be AT+CMGS and not AT+CNGS
Hope this helps!
#2 

WRITTEN BY BOUGUSS ON JULY 6TH, 2009 @ 5:34 AM

Good catch; I fixed it. Thanks.
#3 

WRITTEN BY JEROEN ON JULY 6TH, 2009 @ 9:23 AM

hi can anybody tell me if an s m s message is the same as a flash message thankx in advance
#4 

WRITTEN BY RUSSELL ON SEPTEMBER 2ND, 2009 @ 7:31 AM

hi russell here again i meant to say an s m s message on an mobile
phone
#5 

WRITTEN BY RUSSELL ON SEPTEMBER 2ND, 2009 @ 7:33 AM

Russel,
A regular SMS message is stored in the recipient phone (or SIM) and the phone indicates a new message has arrived with an SMS icon. A flash message is different in 2 ways: first it is displayed directly on the recipients phone, second (and this depends on how it was sent) it may not be stored so that when you dismiss the message it is gone.
Jeroen
#6 

WRITTEN BY JEROEN ON SEPTEMBER 2ND, 2009 @ 8:18 AM

Typo:
The command to find out which of the modes are supported by your GSM modem is ‘AT+CMGF=?’.
Not ‘AT+GSMF=?’.
Thanks for your helpful site!!
#7 

WRITTEN BY MARCEL ANTHONIJSZ ON DECEMBER 3RD, 2009 @ 3:06 PM

Thanks, I fixed it.
#8 

WRITTEN BY JEROEN ON DECEMBER 4TH, 2009 @ 1:58 PM

I sent a flash message from computer using a TC65 gsm/gprs modem to a Sony Ericsson F305 and to my surprise the phone asked if I wanted to save the message.
Standards are not followed by all!!!.
Regards
Franco
P.S. Most phones does not let you save the message!!!.
#9 

WRITTEN BY FRANCO ON NOVEMBER 15TH, 2010 @ 5:57 PM

modem complaining of CMS ERROR 305, invalid text. i am using only normal alpha numeric. whats the problem

[1]Send an SMS from your PC

Send an SMS from your PC

THIS POST WAS WRITTEN BY JEROEN ON JANUARY 7, 2009
POSTED UNDER: SMS
PC에서 GSM 폰으로 SMS를 보내는 것은 여러 방법이 있다.
Sending an SMS from a PC to a GSM phone can be done in many ways.
첫 방법은 당신의 PC에 GSM 폰을 연결해야 한다.
The first method I discuss requires a GSM phone attached to your PC.
GSM 폰(또는 GMS card)는 PC에 다른 방식으로 연결할 수 있다; BlueTooth, infrared(IrDA) 또는 씨리얼 케이블. 폰이 연결되는 방식은 무관하며 중요한 것은 GSM이 modem으로 사용가능하다는 것이다. 윈도우 PC에서 이는 TAPI 모뎀으로 사용가능하다는 것을 의미한다.
The GSM phone (or GMS card) can be connected to your PC in different ways; using BlueTooth, infrared (IrDA) or a serial cable. The way the phone is connected is irrelevant, what counts is that the GSM is available as a modem. On windows PCs this means that it will be available as a TAPI modem.
프로그램은 AT 커맨드 라고 불리는 것을 전송함으로써 모뎀이 무언가를 하도록 만든다.
Programs make modems do things by sending them so called AT commands. E.g.
ATD5551234 는 modem이 5551234 번호로 커넥션을 연결하도록 만든다.
ATD5551234 makes the modem dial a connection to the number 5551234.
ATA 는 incomming call에 modem이 응답을 하도록 한다. 모든 모뎀의 특성들은 이와 같은 명령을 사용함으로써 가능하다.
ATA makes the modem answer an incoming call. All your modem’s features are available using commands like these.
short message(SMS)를 다루는 특별한 AT 커맨드 셋이 있다. 이들 AT 커맨드들은 3GPP 에 의해 Technical Specification TS 27.005로 발표되었다. 이들 AT 커맨드들은 오직 short messages를 보낼 수 있는 (GSM) 장치에 의해서만 이해된다.
There is a special set of these AT commands to manipulate short messages (SMS). These AT commands are published by the 3GPP as Technical Specification TS 27.005. These AT commands are only understood by (GSM) devices that can send short messages.
  1. 당신이 PC와 연결할 수 있는 GSM(BluTooth, Infrared 또는 data(serial)cable을 사용해서)
    A GSM that you can connect to a PC (using BlueTooth, Infrared or a data (serial) cable.
  2. GSM은 모뎀처럼 동작한다. 어떤 폰들은 당신이 ring tone을 설정하고 address book을 다룰 수 있도록 하는 케이블과 소프트웨어와 함께 온다. 이것들은 당신의 폰이 모뎀처럼 동작하는데 필요한 것이 아니다. 모뎀처럼 동작할 수 있는 폰들은 종종 당신이 PC와 연결할 수 있도록 하는 연결타입을 선택하도록 한다.
    The GSM can act as a modem. Some phones come with a cable and software that allows you to configure ring tones and manipulate the address book, this does not require your phone to act as a modem. Phones that can act as a modem often let you pick the type of connection a PC can make.
  3. GSM은 short message를 전송하는데 사용될 수 있다 (Mobile Originated short messages). 만약 당신이 손에 있는 폰으로 SMS를 보낼 수 없다면 당신의 컴퓨터를 통해서도 수행될 수 없는 것이다.
    The GSM can be used to send short messages (Mobile Originated short messages). If you can’t send an SMS using the phone by hand, it is unlikely that it can be done via your computer.
당신의 폰이 3 필요조건을 충족한다면, 당신은 그것을 PC로부터 SMS를 보내는데 사용할 수 있다. 진보한 스마트 폰의 경우(Eriksson P800 같은)은 SMS 메시지를 보내는데 필요한 modem 커맨드를 지원하지 않는다. 나는 '장치 자체가 스마트해서 당신이 SMS 메시지를 보내는데 PC를 필요로 하지 않는다'는 철학이라고 추측한다. 불행히도, 장치 자체가 지원할 수 없는 많은 형태의 (binary)SMS 메시지가 있다. 그러나 만약 장치만 특정 모뎀 셋을 지원한다면 전송될 수 있다.
If your phone fulfills all 3 requirements, then it is likely that you can use it to send SMS messages from your PC. But this is not true for every phone. Even some advanced smart phones (like the Eriksson P800) don’t support the modem command set required to send SMS messages. I guess the philosophy is that ‘the device itself is so smart, you don’t need a PC to send SMS messages’. Unfortunately, there are many types of (binary) SMS messages that the device itself can’t support, but could be sent if only it supported the specific modem set.
SMS 메시지를 전송하기 위해 2 모드가 있다. 장치는 하나 혹은 둘다 지원할 수 있다:
There are 2 ‘modes’ defined for sending SMS messages this way. A device and support either or both:
  1. Text mode. 텍스트 모드에서는 text SMS message를 보내는 것이 간단하다. AT 커맨드는 하이퍼 터미널과 같은 프로그램을 사용하여 손으로 타이핑될 수 있다. 그러나 텍스트 모드에서는 text 메시지만 전송될 수 있다. 그러나 거기에는 더 많은 재밌는 전송될 메시지들이 있다.
    In text mode it is very simple to send an text SMS message. The AT command could be typed in manually using a program like hyper-terminal. In text mode, however only text messages can be sent. But there many more fun messages to be sent.
  2. PDU mode. PDU 모드에서는 어떤 SMS message든지 전송될 수 있다. PC는 PDU(protocol data unit)를 GSM 장치에 제출하고 GSM 장치는 단지 이를 GSM 네트웍으로 전달한다(실제로 SMSC로). PDU를 전송하는 커맨드는 간단하다, 그러나 PDU의 포맷팅은 간단하지 않고 프로그램 없이 수행될 수 업다. 흥미로운 점은 GSM 장치 자체는 전송되는 PDU를 이해할 필요가 없다는 것이다. 그래서 당신은 EMS message나 WAP push message를 지원하지 않는 폰을 사용해서 보낼 수 있을 것이다.
    In PDU mode any type of SMS message can be sent. The PC submits a PDU (protocol data unit) to the GSM device, and the GSM device just passes this on to the GSM network (actually to the SMSC). The command to send a PDU is still simple, but the formatting of a PDU is not and cannot be done without a program. An interesting fact is that the GSM device itself does not need to understand the PDU it is sending, so you could send an EMS message or a WAP push message using a phone that doesn’t support either.
나는 아직 오직 텍스트 모드만을 지원하는 단말은 보지 못했다. 그러나 PDU 모드만을 지원하는 많은 장치들을 보았다. 그래서 당신이 SMS message를 전송하는 범용 프로그램을 작성하고자 한다면 PDU 모드를 사용해서 작성하는 것이 좋을 것이다.
I have not yet encountered a phone that only supports text mode, but I have encountered many devices that support only PDU mode. So if you want to write a generic program to send SMS messages you’re better off if you do it using PDU mode.
다행히도 또한 PDU 모드는 다양한 애플리케이션 셋을 제공한다. 우리가 EMS, WAP push, bookmakrs, configuration 그리고 다른 화려한 SMS message들을 보낼 수 있는게 PDU 모드에서 이지만 말이다.
Fortunately PDU mode also offers us the richest set of applications, only though PDU mode we can send EMS, WAP push, bookmarks, configuration and other fancy SMS messages.
다음 몇몇 포스트에서 어떻게 text모드에서 SMS를 보내고 PDU 모드에서 SMS를 보내는지 자세한 사항을 다룰 것이다.
In the next few posts I’ll dive a little more into the details of how to send an SMS in text mode and how to send an SMS in PDU mode.