• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Data Saver
2metaDescription=User-enabled data usage optimization.
3page.keywords="android N", "data usage", "metered network"
4page.image=images/cards/card-nyc_2x.jpg
5@jd:body
6
7<div id="qv-wrapper">
8  <div id="qv">
9    <h2>
10      이 문서의 내용
11    </h2>
12
13    <ol>
14      <li>
15        <a href="#status">Data Saver 기본 설정 확인</a>
16        <ol>
17          <li>
18            <a href="#request-whitelist">허용 목록 권한 요청</a>
19          </li>
20        </ol>
21      </li>
22
23      <li>
24        <a href="#monitor-changes">Data Saver 기본 설정 변경 사항
25모니터링</a>
26      </li>
27
28      <li>
29        <a href="#testing">Android 디버그 브리지 명령을 이용한 테스트</a>
30      </li>
31    </ol>
32  </div>
33</div>
34
35<p>
36  스마트폰의 수명 전체에 걸쳐, 모바일 데이터 요금제에 따른 비용이
37 기기 자체의 가격을 쉽게 초과할 수 있습니다. N Developer Preview에서는 사용자들이
38로밍 중이든, 결제 주기가 끝날 무렵이든, 소액 선불 데이터 팩을 사용 중이든 상관없이, 데이터 사용량을 줄이기 위해 기기 전체에서
39Data Saver를 활성화할 수 있습니다.
40</p>
41
42<p>
43  사용자가 <strong>Settings</strong>에서 Data Saver를 활성화하고
44 해당 기기가 데이터 통신 네트워크에 있는 경우, 시스템은 백그라운드 데이터 사용을
45차단하고 가능하면 포그라운드에서 데이터를 더 적게 사용하도록 앱에게 신호를 보냅니다. 사용자는
46Data Saver가 켜진 경우에도 백그라운드 데이터 통신 연결을 허용하기 위해
47특정 앱을 허용 목록에 추가할 수 있습니다.
48</p>
49
50<p>
51  N Developer Preview는 {@link android.net.ConnectivityManager}
52 API를 확장하여 <a href="#status">사용자의 Data Saver 기본 설정을 검색</a>하고 <a href="#monitor-changes">기본
53 설정 변경을 모니터링</a>하는 방법을
54 앱에 제공합니다. 사용자가 Data Saver를 활성화했는지 여부를 앱이 확인하고
55포그라운드 및 백그라운드 데이터 사용을 제한하기 위해
56앱이 노력하는 것은 좋은 방법입니다.
57</p>
58
59<h2 id="status">
60  Data Saver 기본 설정 확인
61</h2>
62
63<p>
64  N Developer Preview에서 앱이 {@link
65 android.net.ConnectivityManager} API를 사용하여, 어떤 데이터 사용량 제한이
66적용되고 있는지를 확인할 수 있습니다. {@code getRestrictBackgroundStatus()}
67 메서드는 다음 값 중 하나를 반환합니다.
68</p>
69
70<dl>
71  <dt>
72    {@code RESTRICT_BACKGROUND_STATUS_DISABLED}
73  </dt>
74
75  <dd>
76    Data Saver가 비활성화되었습니다.
77  </dd>
78
79  <dt>
80    {@code RESTRICT_BACKGROUND_STATUS_ENABLED}
81  </dt>
82
83  <dd>
84    사용자가 이 앱에 대해 Data Saver를 활성화했습니다. 앱은 포그라운드에서 데이터 사용량을
85제한하고, 백그라운드
86데이터 사용량에 대한 제한을 적절히 처리하기 위해 노력해야 합니다.
87  </dd>
88
89  <dt>
90    {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
91  </dt>
92
93  <dd>
94    사용자가 Data Saver를 활성화했지만 앱이 허용 목록에 추가되어 있습니다. 앱은
95포그라운드 및 백그라운드 데이터 사용량을 제한하기 위해 여전히 노력해야 합니다.
96  </dd>
97</dl>
98
99<p>
100  Data Saver가 비활성화되어 있거나 앱이 허용 목록에 추가되어 있더라도,
101기기가 데이터 통신 네트워크에 연결될 때마다 항상
102 데이터 사용량을 제한하는 것이 좋은 방법입니다. 다음 샘플 코드에서는 {@link
103 android.net.ConnectivityManager#isActiveNetworkMetered
104 ConnectivityManager.isActiveNetworkMetered()} 및 {@code
105 ConnectivityManager.getRestrictBackgroundStatus()}를 사용하여 앱이 사용해야 하는 데이터의 양을
106결정합니다.
107</p>
108
109<pre>
110ConnectivityManager connMgr = (ConnectivityManager)
111        getSystemService(Context.CONNECTIVITY_SERVICE);
112// Checks if the device is on a metered network
113if (connMgr.isActiveNetworkMetered()) {
114  // Checks user’s Data Saver settings.
115  switch (connMgr.getRestrictBackgroundStatus()) {
116    case RESTRICT_BACKGROUND_STATUS_ENABLED:
117    // Background data usage is blocked for this app. Wherever possible,
118    // the app should also use less data in the foreground.
119
120    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
121    // The app is whitelisted. Wherever possible,
122    // the app should use less data in the foreground and background.
123
124    case RESTRICT_BACKGROUND_STATUS_DISABLED:
125    // Data Saver is disabled. Since the device is connected to a
126    // metered network, the app should use less data wherever possible.
127  }
128} else {
129  // The device is not on a metered network.
130  // Use data as required to perform syncs, downloads, and updates.
131}
132</pre>
133
134<h3 id="request-whitelist">
135  허용 목록 권한 요청
136</h3>
137
138<p>
139  앱이 백그라운드에서 데이터를 사용해야 하는 경우, 앱의 패키지 이름의 URI가 포함된
140<code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
141인텐트(예:
142<code>package:MY_APP_ID</code>)를 앱이 보내서
143허용 목록 권한을 요청할 수 있습니다.
144</p>
145
146<p>
147  인텐트와 URI를 보내면 <strong>Settings</strong> 앱이 시작되고
148앱에 대한 데이터 사용량 설정이 표시됩니다. 그러면 사용자는 앱에 대해 백그라운드 데이터의
149사용 여부를 결정할 수 있습니다. 이 인텐트를 보내기 전에,
150백그라운드 데이터 사용을 활성화하기 위해
151<strong>Settings</strong> 앱 시작 여부를 사용자에게 먼저 묻는 것이
152좋습니다.
153</p>
154
155<h2 id="monitor-changes">
156  Data Saver 기본 설정 변경 사항 모니터링
157</h2>
158
159<p>
160  앱은 {@code
161 ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED}를 수신하기 위해 {@link
162 android.content.BroadcastReceiver}를 만들고 수신기를 {@link android.content.Context#registerReceiver
163 Context.registerReceiver()}에 동적으로 등록하여
164Data Saver 기본 설정의 변경 사항을 모니터링할 수 있습니다. 앱은 이 브로드캐스트를 수신할 때 {@code
165 ConnectivityManager.getRestrictBackgroundStatus()}를 호출하여 <a href="#status">새로운 Data Saver 기본 설정이
166권한에 영향을 미치는지 확인</a>해야
167합니다.
168</p>
169
170<p class="note">
171  <strong>참고:</strong> 시스템에서는 {@link
172 android.content.Context#registerReceiver Context.registerReceiver()}로 동적으로 등록하는 앱에만 이
173브로드캐스트를 보냅니다. 이
174브로드캐스트를 수신하도록 매니페스트에 등록하는 앱은
175이를 수신하지 못합니다.
176</p>
177
178<h2 id="testing">
179  Android 디버그 브리지 명령을 이용한 테스트
180</h2>
181
182<a href="{@docRoot}tools/help/adb.html">Android 디버그 브리지</a>는
183네트워크 권한을 확인하고 구성하는 데 사용될 수 있는 몇 가지 명령을
184제공합니다.
185
186<dl>
187  <dt>
188    <code>$ adb shell dumpsys netpolicy</code>
189  </dt>
190
191  <dd>
192    현재 전역 백그라운드 네트워크
193 제한 설정, 허용 목록에 현재 있는 패키지 UID 및 알려진
194다른 패키지의 네트워크 권한이 포함된 보고서를 생성합니다.
195  </dd>
196
197  <dt>
198    <code>$ adb shell cmd netpolicy</code>
199  </dt>
200
201  <dd>
202    Network Policy Manager(netpolicy) 명령의 전체 목록을 표시합니다.
203  </dd>
204
205  <dt>
206    <code>$ adb shell cmd netpolicy set restrict-background
207    &lt;boolean&gt;</code>
208  </dt>
209
210  <dd>
211    <code>true</code> 또는
212 <code>false</code>를 각각 전달할 때 Data Saver 모드를 활성화하거나 비활성화합니다.
213  </dd>
214
215  <dt>
216    <code>$ adb shell cmd netpolicy add restrict-background-whitelist
217    &lt;UID&gt;</code>
218  </dt>
219
220  <dd>
221    지정된 패키지 UID를 허용 목록에 추가하여 백그라운드 데이터 통신 연결을
222 허용합니다.
223  </dd>
224
225  <dt>
226    <code>$ adb shell cmd netpolicy remove restrict-background-whitelist
227    &lt;UID&gt;</code>
228  </dt>
229
230  <dd>
231    지정된 패키지 UID를 허용 목록에서 제거하여, Data Saver가 활성화된 동안 백그라운드 데이터 통신 연결을
232차단합니다.
233  </dd>
234</dl>