Swift 物聯網程序設計 (Program the Internet of Things with Swift for iOS)

Ahmed Bakir 王烈徵 譯

  • Swift 物聯網程序設計 (Program the Internet of Things with Swift for iOS)-preview-1
  • Swift 物聯網程序設計 (Program the Internet of Things with Swift for iOS)-preview-2
  • Swift 物聯網程序設計 (Program the Internet of Things with Swift for iOS)-preview-3
Swift 物聯網程序設計 (Program the Internet of Things with Swift for iOS)-preview-1

買這商品的人也買了...

商品描述

《Swift物聯網程序設計》詳細闡述了與Swift 語言開發相關的基本解決方案,主要包括構建第一個物聯網應用程序、Swift入門、使用HealthKit訪問健康信息、使用Core Motion保存運動數據、使用Fitbit API集成第三方健身跟蹤器和數據、構建第一個watchOS應用、構建交互式watchOS應用、構建獨立的watchOS應用、連接到藍牙低功耗設備、使用iBeacons進行定位、使用HomeKit實現家庭自動化、構建與Raspberry Pi交互的應用程序、使用鑰匙串服務保護數據、使用Touch ID進行本地身份驗證、使用Apple Pay接收付款等內容。此外,本書還提供了豐富的示例以及代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。

作者簡介

艾哈邁德·巴克爾(Ahmed Bakir)是devAtelier LLC(www.devatelier.com)的創始人和首席開發人員,devAtelier是一家位於聖地亞哥的移動應用開發公司。
Ahmed Bakir在花了幾年時間編寫嵌入式系統軟件之後,他開始在業餘時間開發移動App,並以此為樂。消息傳開後,就有客戶絡繹不絕地登門拜訪他,以至於他不得不辭掉正式工作,全職投入移動App的開發中。
從那以後,Ahmed Bakir參與了20多個移動項目的開發,其中有若干個項目進入了App Store的前25名,包括在同類產品中排名第一的App(Video Scheduler)。
他的客戶中既有雄心勃勃的初創公司,也有一些大型企業,如Citrix等。業餘時間他最喜歡談論的還是移動開發。

目錄大綱

1篇  物聯網應用程序開發和Swift編程語言基礎知識
1章  構建一個物聯網應用程序 3
1.1  設置項目 4
1.2  建立用戶界面 8
1.2.1  創建表格視圖控制器 9
1.2.2  創建地圖視圖控制器 19
1.3  請求位置許可 22
1.4  訪問用戶的位置 26
1.5  顯示用戶的位置 28
1.5.1  使用數據填充表格視圖 28
1.5.2  使用數據填充地圖 30
1.6  小結 33
2章  Swift入門 35
2.1  使用Swift的理由 36
2.2  基本的Swift語法 37
2.2.1  調用方法 37
2.2.2  定義變量 38
2.2.3  複合數據類型 39
2.2.4  條件邏輯 40
2.2.5  枚舉類型 41
2.2.6  循環 43
2.3  關於Swift中的面向對象編程 43
2.3.1  構建類 43
2.3.2  協議 45
2.3.3  方法簽名 45
2.3.4  訪問屬性和方法 46
2.3.5  實例化對象 47
2.3.6  字符串 48
2.3.7  格式化字符串 49
2.3.8  集合 50
2.3.9  強制轉換 52
2.4  關於Swift特定的語言功能 52
2.4.1  可選類型 53
2.4.2  關於try-catch塊 55
2.5  在項目中混合使用Objective-C和Swift 57
2.6  小結 59
2篇  Fitbit健康設備項目
3章  使用HealthKit訪問健康信息 63
3.1  核心框架和應用程序簡介 63
3.2  初步設置 65
3.2.1  設置用戶界面 65
3.2.2  設置HealthKit項目 78
3.3  提示用戶以獲得HealthKit權限 81
3.3.1  從HealthKit檢索數據 86
3.3.2  在表格視圖中顯示結果 91
3.3.3  獲取背景更新 95
3.4  小結 97
4章  使用Core Motion保存運動數據 99
4.1  簡介 99
4.2  使用Core Motion訪問Motion硬件 99
4.3  查詢步數 103
4.3.1  檢測實時更新的步數 106
4.3.2  檢測活動類型 109
4.4  將數據保存到HealthKit中 111
4.5  小結 120
5章  使用Fitbit API集成三方健身跟踪器和數據 121
5.1  關於Fitbit API 121
5.1.1  關於RESTful API 122
5.1.2  Fitbit RESTful API實現細節 124
5.1.3  使用Apache設置本地環境 125
5.1.4  OAuth 1.0a身份驗證模型 127
5.1.5  Fitbit OAuth實現 128
5.1.6  Fitbit API調用速率限制 129
5.1.7  進行異步調用 130
5.1.8  使用回調作為參數 131
5.2  設置與Fitbit兼容的iOS項目 132
5.2.1  視圖控制器 132
5.2.2  記錄器庫 136
5.2.3  設置基本的加密功能集 137
5.2.4  API客戶端庫 140
5.2.5  OAuth庫 156
5.2.6  測試到目前為止我們擁有的代碼 164
5.3  向Fitbit API發出請求 166
5.3.1  檢索用戶個人資料 168
5.3.2  在API中檢索和設置數據 170
5.3.3  關於OAuth版本的問題 175
5.4  小結 176
3篇  Apple Watch項目
6章  構建一個watchOS應用 179
6.1  簡介 179
6.2  關於watchOS應用程序和iOS應用程序 180
6.3  設置項目 182
6.4  將表格添加到watchOS應用程序中 186
6.4.1  定義表格 190
6.4.2  從iOS應用程序中獲取數據 196
6.5  使用自定義佈局構建詳細信息頁面 199
6.6  顯示詳細信息界面控制器 204
6.6  小結 207
7章  構建交互式watchOS應用 209
7.1  簡介 209
7.2  使用壓感觸控顯示菜單 209
7.2.1  重置位置列表 214
7.2.2  顯示細節視圖控制器 214
7.2.3  模擬壓感觸控 217
7.3  將按鈕添加到界面控制器 218
7.4  在界面控制器之間傳遞信息 221
7.5  使用文本輸入添加註釋 225
7.6  將數據發送回父iOS應用 227
7.7  小結 231
8章  構建獨立的watchOS應用 233
8.1  使用Core Location請求當前位置 233
8.2  使用NSTimer創建提醒 242
8.3  從watchOS應用程序進行網絡調用 247
8.4  處理JSON響應 253
8.5  小結 256
4篇  藍牙和WiFi連接
9章  連接到藍牙低功耗設備 259
9.1  Apple藍牙協議棧簡介 259
9.1.1  關鍵術語和概念 260
9.1.2  核心藍牙對象 260
9.2  藍牙低功耗應用程序構建思路 261
9.3  應用程序開發待辦事項 261
9.3.1  基本應用和主場景 262
9.3.2  中心角色場景 263
9.3.3  外圍角色場景 264
9.3.4  可編輯文本 265
9.4  設置項目 266
9.5  構建界面 266
9.6  使用中心設備管理器 272
9.7  在應用程序中連接到藍牙低功耗設備 276
9.7.1  構建界面 276
9.7.2  通過委託保持代碼的干淨 280
9.7.3  掃描外圍設備 284
9.7.4  發現並連接 288
9.7.5  探索服務和特徵 289
9.7.6  訂閱和接收數據 290
9.8  外圍角色 293
9.8.1  構建界面 293
9.8.2  委託設置 294
9.8.3  設置服務 298
9.8.4  廣告服務 299
9.8.5  發送數據 300
9.9  為應用程序啟用後台通信 302
9.10  藍牙佳實踐 303
9.10.1  中心角色設備 303
9.10.2  外圍角色設備 303
9.11  小結 303
10章  使用iBeacon進行定位 305
10.1  iBeacon簡介 305
10.1.1  iBeacon廣告 305
10.1.2  iBeacon準確性 305
10.1.3  隱私 306
10.1.4  區域監視 306
10.2  測距 306
10.3  構建iBeaconApp應用程序 307
10.3.1  創建項目 307
10.3.2  設置背景功能 308
10.4  建立主場景 309
10.4.1  設置UI元素 310
10.4.2  創建出口連接 311
10.4.3  設置約束 312
10.4.4  創建一個自定義按鈕 313
10.5  檢測藍牙狀態 316
10.6  建立區域監視器場景 319
10.6.1  RegionMonitor類 325
10.6.2  使用委託模式 325
10.6.3  創建RegionMonitor類 326
10.6.4  委託方法 327
10.6.5  RegionMonitor方法 331
10.6.6  授權和請求許可 332
10.6.7  CLLocationManagerDelegate方法 333
10.6.8  配置區域監視 339
10.7  建立iBeacon場景 344
10.7.1  BeaconTransmitter類 347
10.7.2  定義BeaconTransmitterDelegate協議 348
10.7.3  將iOS設備配置為iBeacon 350
10.7.4  測試應用程序 353
10.8  小結 353
11章  使用HomeKit實現家庭自動化 355
11.1  HomeKit概念介紹 355
11.2  HomeKit委託方法 356
11.3  構建一個HomeKit應用程序 356
11.3.1  需求 357
11.3.2  HomeKit附件模擬器 357
11.4  創建項目 358
11.4.1  啟用HomeKit 360
11.4.2  建立家庭界面 360
11.4.3  實現家庭管理器委託方法 362
11.4.4  向家庭管理器添加新家庭 369
11.4.5  從家庭中刪除附件 379
11.4.6  使用HomeKit附件模擬器 380
11.4.7  構建服務接口 389
11.4.8  實現UITableView方法 393
11.4.9  特徵的子類 399
11.5  切換到服務場景 405
11.6  運行應用程序 405
11.7  小結 406
12章  構建與Raspberry Pi交互的應用程序 407
12.1  關於Raspberry Pi 407
12.2  Raspberry Pi上的控制界面 408
12.3  設置Raspberry Pi 409
12.3.1  選擇腳本語言 410
12.3.2  配置I2C 410
12.3.3  配置GPIO 414
12.3.4  安裝PyGlow 414
12.4  提供用於控制設備的API 415
12.4.1  安裝Flask 415
12.4.2  Hello World演示程序 416
12.4.3  構建一個非常簡單的偵聽器守護程序 417
12.5  為應用程序創建iOS項目 419
12.5.1  允許傳出HTTP調用 419
12.5.2  視圖控制器 420
12.5.3  日誌庫 423
12.5.4  API客戶端庫 425
12.6  小結 438
5篇  安全物聯網
13章  使用鑰匙串服務保護數據 441
13.1  關於iOS設備上的硬件安全 443
13.2  保護文件數據 444
13.3  關於Apple鑰匙串 446
13.3.1  Apple鑰匙串服務 446
13.3.2  鑰匙串項目的組成 447
13.3.3  實現用於存儲密碼的鑰匙串服務 447
13.3.4  從鑰匙串服務中檢索數據 448
13.3.5  刪除鑰匙串服務的記錄 449
13.3.6  設置應用程序以測試鑰匙串服務 451
13.3.7  視圖控制器 451
13.4  小結 457
14章  使用Touch ID進行本地身份驗證 459
14.1  關於Touch ID 459
14.1.1  LocalAuthentication用例 460
14.1.2  構建Touch ID應用程序 460
14.2  創建項目 461
14.3  建立界面 462
14.4  實現UITableView方法 465
14.5  集成Touch ID以進行指紋認證 467
14.5.1  評估身份驗證策略 467
14.5.2  無須鑰匙串服務的Touch ID身份驗證 467
14.5.3  自定義的身份驗證後備計劃 469
14.5.4  運行應用程序 470
14.6  注意事項 470
14.7  小結 471
15章  使用Apple Pay接收付款 473
15.1  Apple Pay與其他支付系統比較 473
15.1.1  使用Apple Pay的先決條件 474
15.1.2  使用Apple Pay接收支付 475
15.1.3  為Apple Pay配置環境 482
15.1.4  使用Stripe實現Apple Pay支付 492
15.1.5  View Controller代碼 498
15.2  小結 501