Foreword I |
|
xv | |
Foreword II |
|
xix | |
Foreword III |
|
xxi | |
Preface |
|
xxiii | |
Acknowledgments |
|
xxvii | |
Authors |
|
xxix | |
Chapter 1 Overview of the HMS Ecosystem |
|
1 | (26) |
|
1.1 The Rise Of Mobile App Ecosystems |
|
|
1 | (10) |
|
1.1.1 Development of the Mobile Internet |
|
|
1 | (1) |
|
1.1.2 History of Mobile App Ecosystems |
|
|
2 | (4) |
|
1.1.3 Value Distribution of Mobile App Ecosystems |
|
|
6 | (5) |
|
1.2 The History Of The HMS Ecosystem |
|
|
11 | (8) |
|
1.2.1 Huawei's Device Business and Cloud Services |
|
|
11 | (1) |
|
1.2.2 Emergence of an HMS Ecosystem |
|
|
12 | (4) |
|
1.2.3 The HMS Ecosystem Today |
|
|
16 | (3) |
|
1.3 HMS Ecosystem Architecture |
|
|
19 | (5) |
|
1.3.1 Architecture Behind HMS Open Capabilities |
|
|
19 | (3) |
|
1.3.2 HMS Privacy Compliance Framework |
|
|
22 | (2) |
|
|
24 | (1) |
|
|
24 | (3) |
Chapter 2 HMS Core |
|
27 | (16) |
|
2.1 What Does HMS Core Offer? |
|
|
27 | (7) |
|
2.1.1 Develop: Creating Premium Apps Quickly and Cost-Effectively |
|
|
27 | (4) |
|
|
27 | (2) |
|
|
29 | (1) |
|
2.1.1.3 Map Kit, Site Kit, and Location Kit |
|
|
29 | (2) |
|
|
31 | (1) |
|
2.1.2 Grow: Targeting and Engaging with More Users |
|
|
31 | (1) |
|
2.1.3 Monetize: Expanding Your Global Reach with Multiple Channels |
|
|
32 | (2) |
|
2.2 How Are HMS Core Open Capabilities Provided? |
|
|
34 | (1) |
|
|
34 | (1) |
|
|
35 | (1) |
|
2.3 How Are Integrations Authorized? |
|
|
35 | (7) |
|
|
36 | (1) |
|
|
36 | (1) |
|
|
36 | (1) |
|
|
37 | (1) |
|
|
37 | (2) |
|
|
37 | (1) |
|
|
38 | (1) |
|
|
39 | (4) |
|
|
39 | (2) |
|
|
41 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
Chapter 3 Quick Start |
|
43 | (28) |
|
3.1 Registration And Identity Verification |
|
|
43 | (4) |
|
3.1.1 Registering an Account |
|
|
43 | (1) |
|
3.1.2 Verifying Your Identity |
|
|
43 | (4) |
|
3.2 Setting Up A Development Environment |
|
|
47 | (1) |
|
3.3 Creating An App Project |
|
|
48 | (7) |
|
|
48 | (2) |
|
3.3.2 Creating an Android Project |
|
|
50 | (1) |
|
3.3.3 Creating a Keystore File |
|
|
51 | (1) |
|
3.3.4 Configuring Signing in Gradle |
|
|
52 | (3) |
|
3.4 Building The Pet Store App |
|
|
55 | (14) |
|
3.4.1 Adding the Home Screen |
|
|
55 | (3) |
|
3.4.2 Adding the Video Playback Function |
|
|
58 | (1) |
|
3.4.3 Adding the Sign-in Function |
|
|
58 | (3) |
|
3.4.4 Adding the Registration Function |
|
|
61 | (4) |
|
3.4.5 Adding the Personal Center |
|
|
65 | (1) |
|
3.4.6 Adding the Settings Function |
|
|
66 | (3) |
|
|
69 | (2) |
Chapter 4 Account Kit |
|
71 | (50) |
|
|
71 | (1) |
|
|
72 | (10) |
|
4.2.1 Becoming a Verified Huawei Developer |
|
|
72 | (1) |
|
|
73 | (3) |
|
4.2.3 Generating a Signing Certificate Fingerprint |
|
|
76 | (1) |
|
4.2.4 Configuring the Signing Certificate Fingerprint |
|
|
77 | (1) |
|
4.2.5 Enabling Account Kit |
|
|
78 | (1) |
|
4.2.6 Integrating the Account SDK |
|
|
79 | (3) |
|
4.3 Signing In With A HUAWEI ID |
|
|
82 | (26) |
|
4.3.1 Designing a HUAWEI ID Sign-In Button |
|
|
82 | (2) |
|
4.3.2 Signing In with a HUAWEI ID in ID Token Mode |
|
|
84 | (12) |
|
|
85 | (1) |
|
|
86 | (10) |
|
4.3.3 Signing In with a HUAWEI ID in Authorization Code Mode |
|
|
96 | (8) |
|
|
97 | (1) |
|
|
98 | (6) |
|
4.3.4 Silently Signing In with a HUAWEI ID |
|
|
104 | (4) |
|
|
104 | (2) |
|
|
106 | (2) |
|
4.4 Signing Out From A HUAWEI ID |
|
|
108 | (2) |
|
|
108 | (1) |
|
|
109 | (1) |
|
4.5 Revoking Authorization |
|
|
110 | (3) |
|
|
110 | (2) |
|
|
112 | (1) |
|
4.6 Automatically Reading An SMS Verification Code |
|
|
113 | (5) |
|
|
113 | (1) |
|
|
114 | (4) |
|
|
118 | (1) |
|
|
119 | (2) |
Chapter 5 In-App Purchases |
|
121 | (78) |
|
|
121 | (2) |
|
|
123 | (2) |
|
|
123 | (2) |
|
5.2.2 Integrating the IAP SDK |
|
|
125 | (1) |
|
5.3 Product Creation In PMS |
|
|
125 | (7) |
|
5.3.1 Principles Behind PMS |
|
|
125 | (2) |
|
5.3.2 Configuring Products |
|
|
127 | (5) |
|
5.3.2.1 Planning Products |
|
|
127 | (1) |
|
5.3.2.2 Configuring a Consumable |
|
|
127 | (3) |
|
5.3.2.3 Configuring a Non-consumable |
|
|
130 | (1) |
|
5.3.2.4 Configuring a Subscription |
|
|
130 | (2) |
|
|
132 | (24) |
|
5.4.1 Checking Whether IAP Is Supported |
|
|
133 | (1) |
|
5.4.2 Obtaining the Product Information |
|
|
134 | (3) |
|
5.4.3 Initiating a Payment |
|
|
137 | (4) |
|
5.4.4 Confirming the Transaction |
|
|
141 | (5) |
|
5.4.5 Redelivering a Product |
|
|
146 | (3) |
|
|
146 | (1) |
|
|
147 | (2) |
|
5.4.6 Querying Purchased Products and Orders |
|
|
149 | (7) |
|
|
156 | (10) |
|
|
156 | (3) |
|
5.5.2 Service Provisioning |
|
|
159 | (6) |
|
5.5.3 Subscription Management |
|
|
165 | (1) |
|
|
166 | (6) |
|
5.6.1 Principles Behind Sandbox Testing |
|
|
168 | (1) |
|
|
169 | (3) |
|
5.7 IAP Server Capability Openness |
|
|
172 | (26) |
|
|
173 | (1) |
|
|
174 | (24) |
|
|
198 | (1) |
|
|
198 | (1) |
Chapter 6 Push Kit |
|
199 | (46) |
|
|
199 | (3) |
|
|
202 | (2) |
|
|
202 | (1) |
|
6.2.2 Integrating the Push SDK |
|
|
203 | (1) |
|
6.3 Obtaining A Push Token |
|
|
204 | (6) |
|
6.3.1 Requesting a Push Token |
|
|
204 | (1) |
|
6.3.2 Receiving the Push Token |
|
|
205 | (1) |
|
|
206 | (2) |
|
|
208 | (2) |
|
6.4 Subscribing To A Topic |
|
|
210 | (8) |
|
|
210 | (2) |
|
|
212 | (6) |
|
6.5 Pushing Messages In AppGallery Connect |
|
|
218 | (9) |
|
6.5.1 Pushing Notification Messages |
|
|
218 | (4) |
|
6.5.2 Pushing Data Messages |
|
|
222 | (5) |
|
6.6 Pushing Messages Via The APP Server |
|
|
227 | (10) |
|
|
227 | (2) |
|
|
229 | (8) |
|
6.7 Receiving Message Receipts |
|
|
237 | (6) |
|
|
240 | (1) |
|
|
240 | (3) |
|
|
243 | (2) |
Chapter 7 Location Kit |
|
245 | (30) |
|
|
245 | (5) |
|
|
246 | (2) |
|
7.1.2 Activity Identification |
|
|
248 | (1) |
|
|
248 | (1) |
|
|
248 | (2) |
|
|
250 | (1) |
|
7.2.1 Enabling Location Kit |
|
|
250 | (1) |
|
7.2.2 Integrating the Location SDK |
|
|
250 | (1) |
|
7.3 Developing The Fused Location Function |
|
|
251 | (5) |
|
7.3.1 Configuring Location Permissions |
|
|
251 | (1) |
|
|
252 | (4) |
|
7.4 Developing The Mock Location Function |
|
|
256 | (4) |
|
7.4.1 Selecting an App to Use for the Mock Location |
|
|
258 | (1) |
|
|
258 | (2) |
|
7.5 Developing The Activity Identification Function |
|
|
260 | (6) |
|
7.5.1 Configuring the Activity Identification Permissions |
|
|
260 | (1) |
|
|
261 | (5) |
|
7.6 Developing The Geofence Function |
|
|
266 | (7) |
|
7.6.1 Creating a Geofence |
|
|
266 | (1) |
|
|
267 | (6) |
|
|
273 | (1) |
|
|
273 | (2) |
Chapter 8 Site Kit |
|
275 | (26) |
|
|
275 | (2) |
|
|
277 | (3) |
|
|
280 | (12) |
|
|
280 | (4) |
|
8.3.2 Place Search Suggestion |
|
|
284 | (2) |
|
8.3.3 Place Detail Search |
|
|
286 | (3) |
|
8.3.4 Nearby Place Search |
|
|
289 | (3) |
|
|
292 | (6) |
|
|
294 | (2) |
|
|
296 | (2) |
|
|
298 | (1) |
|
|
299 | (2) |
Chapter 9 Map Kit |
|
301 | (80) |
|
|
301 | (2) |
|
|
303 | (2) |
|
|
305 | (11) |
|
9.3.1 Creating a Map Instance |
|
|
305 | (5) |
|
9.3.2 Setting the Map Type |
|
|
310 | (1) |
|
9.3.3 Setting the Padding |
|
|
310 | (3) |
|
|
313 | (3) |
|
9.4 Interacting With The Map |
|
|
316 | (15) |
|
|
318 | (2) |
|
9.4.2 UI Controls and Gestures |
|
|
320 | (4) |
|
|
324 | (7) |
|
|
331 | (32) |
|
|
332 | (10) |
|
|
342 | (2) |
|
|
344 | (11) |
|
|
355 | (8) |
|
9.6 Customizing The Map Style |
|
|
363 | (6) |
|
|
363 | (1) |
|
|
364 | (2) |
|
|
366 | (3) |
|
|
369 | (10) |
|
|
369 | (1) |
|
|
369 | (10) |
|
|
379 | (2) |
Chapter 10 Safety Detect |
|
381 | (28) |
|
|
381 | (1) |
|
|
382 | (2) |
|
10.2.1 Enabling Safety Detect |
|
|
383 | (1) |
|
10.2.2 Integrating the Safety Detect SDK |
|
|
383 | (1) |
|
|
384 | (10) |
|
|
384 | (1) |
|
|
385 | (9) |
|
|
394 | (3) |
|
|
394 | (1) |
|
|
394 | (3) |
|
|
397 | (3) |
|
|
397 | (1) |
|
|
398 | (2) |
|
|
400 | (8) |
|
|
401 | (1) |
|
|
401 | (7) |
|
|
408 | (1) |
Chapter 11 FIDO |
|
409 | (24) |
|
|
409 | (5) |
|
11.1.1 Principles Behind FIDO2 |
|
|
410 | (3) |
|
11.1.2 Principles Behind BioAuthn |
|
|
413 | (1) |
|
|
414 | (1) |
|
|
415 | (12) |
|
11.3.1 Initializing the FIDO2 Client |
|
|
418 | (1) |
|
11.3.2 Initiating the Registration Process |
|
|
419 | (3) |
|
11.3.3 Obtaining the Registration Result |
|
|
422 | (1) |
|
11.3.4 Initiating the Authentication Process |
|
|
423 | (3) |
|
11.3.5 Obtaining the Authentication Result |
|
|
426 | (1) |
|
|
427 | (4) |
|
11.4.1 Fingerprint Authentication |
|
|
427 | (3) |
|
11.4.2 3D Facial Authentication |
|
|
430 | (1) |
|
|
431 | (1) |
|
|
431 | (2) |
Chapter 12 Testing and Release |
|
433 | (26) |
|
12.1 DIGIX Lab Test Services |
|
|
433 | (18) |
|
|
434 | (10) |
|
12.1.1.1 Compatibility Testing |
|
|
435 | (5) |
|
12.1.1.2 Stability Testing |
|
|
440 | (1) |
|
12.1.1.3 Performance Testing |
|
|
441 | (1) |
|
12.1.1.4 Power Consumption Testing |
|
|
441 | (3) |
|
|
444 | (7) |
|
12.1.2.1 Performing Remote Debugging in Real Time |
|
|
444 | (4) |
|
12.1.2.2 Remotely Viewing System Logs |
|
|
448 | (2) |
|
12.1.2.3 Rotating the Screen |
|
|
450 | (1) |
|
12.1.2.4 Viewing Device Details |
|
|
450 | (1) |
|
|
451 | (5) |
|
12.2.1 Signing In and Creating an App |
|
|
451 | (1) |
|
12.2.2 Configuring Basic App Information |
|
|
451 | (2) |
|
12.2.3 Configuring Distribution Information |
|
|
453 | (2) |
|
12.2.4 Submitting the App for Release |
|
|
455 | (1) |
|
|
456 | (3) |
Appendix: HMS Ecosystem Concepts |
|
459 | |