Just My Life & My Work

Posts tagged ‘ios’

[Xcode] 主線程檢查器 (Main Thread Checker)

我所使用的整合開發環境是Xcode,每年更新都會釋出新的功能,來幫助開發人如我者更有效率地工作!2018年Xcode即將邁入第10版,這裡我想要來介紹主線程檢查器 (Main Thread Checker)

回想2012年我還是個初學者的時候,還不知道主線程的重要性,以致於有時候發生不預期的反應,實在摸不著頭緒!基本上要記住,改變畫面的動作要在主線程實現,不然會發生什麼事?有時候有反應,有時候沒反應,這種狀況debug超級困難呢!

[Xcode] 主線程檢查器 (Main Thread Checker)1

好在Xcode已經能從語法分析來得知,哪些程式碼會跑到非主線程,若改變畫面的元件在非主線程操作,Xcode就會有紫色的提示。上圖表示Label一定要在主線程使用 ([UILabel text] must be used from main thread only)。

(繼續閱讀…)

[iOS] 取得藍芽裝置Mac

最近在開發藍芽裝置相關iOS App,每次掃描藍芽裝置都會出現一大串裝置的清單,那就表示周圍有很多藍芽裝置。怎麼來區別裝置?透過名稱是最方便的辦法,然而有時候名稱會重複(多台同款筆電、智慧手環等),此時就需要再透過Mac Address來辨識。

[iOS] 取得藍芽裝置Mac.png

然而開發iOS時卻發現沒有提供此功能!?直覺猜想是Apple為了保護用戶的隱私,所以將取得Mac的API隱藏起來,也就是說iOS 7之後就無法取得Mac Address,目前可以UUID的方式來替代。只是此UUID還滿神奇,每個iOS裝置掃到同一個藍芽裝置,都會有不一樣的UUID!老闆準備要測試時,每次問我那支是哪個「號碼」,我只能兩手一攤,「請你自己記住好嗎XD?

而Android就可以直接取得Mac Address!該說它好棒棒,還是⋯⋯

(繼續閱讀…)

[iOS] Local Notification (本地推播)

自從iOS10開始,Apple整合並重構原本復雜的SDK,特別是本地推播 (Local Notification)遠程推播 (Remote Notification),已經統合為專門處理的User Notifications Framework

五年前(不小心透露年齡⋯⋯)我已介紹過Local Notification,文章可見:Remote/Local Notification

整合過後,推播變得更好管理,於是我們要逐漸捨既舊有的實作習慣囉~

[iOS] Local Notification (本地推播).PNG

(繼續閱讀…)

[iOS] 拷貝影像視圖 (Copy ImageView)

有時候一張影像,我們想要複製來使用,那麼可以如何做?

[iOS] 拷貝影像 (Copy Image)3

我想拷貝上圖下方的黑色漸層影像

(繼續閱讀…)

[iOS] 重連藍芽裝置 (ReConnect BLE Device)

半年前透過人家寫好的藍芽裝置SDK,輕鬆愉快實現App各種功能,現在必須自己寫SDK這一層,也就是透過iOS SDK,來實現藍芽各種連線相關的功能。此刻,我來研究重連藍芽裝置

使用核心藍牙(Core Bluetooth)框架,有三種方式可以重連一個外設。你可以:

  1. 獲取已知外設的列表—你曾經發現或者鏈接的外設—使用retrievePeripheralsWithIdentifiers:方法。如果你尋找的外設在這個列表裡,嘗試去鏈接它。
  2. 用retrieveConnectedPeripheralsWithServices:方法獲取當前連接到系統的外設列表。如果你尋找的外設在這個列表裡,本地連接它。
  3. 用scanForPeripheralsWithServices:options:方法掃描發現外設。如果找到就連接。

取決於使用場景,你可能不想掃描發現相同的外設,每當你想重連它的時候。相反,你可能首先使用其他選項,嘗試重連。如圖所示,一個可能的重連工作流是嘗試每個選項。

一個示例重連工作流

BLE Retrieve.jpg

總覺得看了這圖後,就能完全掌握實作的流程!

(繼續閱讀…)

[iOS] 低功耗藍芽連線流程

最近寫iOS App要跟低功耗藍芽連線,接著傳輸資料解碼後來分析。兩年前有碰藍芽體脂計,是看著韌體溝通協議來實作,兩年後的今天再一次依樣畫葫蘆,這次要搞的硬體是24小時配戴的「玩意兒」。

bluetooth peripheral service characteristics

感謝網路上已有許多教學,學習藍芽只要拾人「芽」慧,就能快速上手!

(繼續閱讀…)

[iOS] 單點擊與雙點擊之判別

最近在開發上流社會App,有個功能要點擊相片來呈現,接著就可以手勢來縮放與取消。此時我需要同時實現單點擊與雙點擊 (Single Tap and Double Tap),可是實際上單點總是會率先被偵測⋯⋯

(繼續閱讀…)

[iOS] 日曆套件 JTCalendar

選擇日期這個功能很常見,只要牽涉到日期時間都會用到,短時間的選擇(如一年、一個月、一星期等)可以使用內建Date Picker,長時間橫跨好幾年的就要考慮使用日曆來挑選日期。在這裡我來推薦我最常用的日曆套件 JTCalendar

[iOS] 日曆套件 JTCalendar.PNG

它功能算是相當強大,日曆可以垂直水平翻前翻後,想客製化顏色、大小等特性皆可。

(繼續閱讀…)

[iOS] 系統藍芽綁定

最近在搞藍芽裝置,它是IoT相關的硬體裝置,只要搞定藍芽連線部分,就能實現許多智慧家庭的應用。現在我想要在iOS連結藍芽裝置,照理說綁定藍芽裝置沒什麼稀奇,直到自己進入開發模式,才發現有許多眉眉角角要去深入瞭解,以老闆之前做藍芽眼罩的經驗來看,他說這就是為什麼IoT還無法普及的原因之一,因為光是藍芽連線,就有許多問題要去克服。「連線」是最基本的門檻,很多應用到死在這條線上⋯⋯

ios oserio 藍芽體脂計

註:物聯網(英語:Internet of Things,縮寫IoT)。

(繼續閱讀…)

寄送藍芽裝置給Apple測試

開發單純的iOS App沒什麼難度,可是送審後的議題總會出其不意。原以為可以只拍攝影片給審核人員看,如何連結我們的產品(藍芽裝置)來操作App,可惜我們沒能逃過高人的「法眼」,於是請老闆將一個貴重的藍芽裝置寄送給Apple測試。約莫一週左右,App總算順利上架啦⋯⋯我也順理成章去環島九天:D~

bluetooth peripheral service characteristics

以下就是在iTunes Connect被reject的原因與描述:

From Apple

  • 2. 1 Performance: App Completeness

Guideline 2.1 – Information Needed

We have started the review of your app, but we are not able to continue because we need the associated hardware to fully assess your app features.

Next Steps

To help us proceed with the review of your app, please send the necessary hardware/accessory to the address below.

NOTE: Please include your app name and app ID in the shipment; failure to provide this information can delay the review process.

Additionally, it may take several business days for us to receive the hardware once it has been delivered to Apple.

Apple, Inc.
1 Infinite Loop, M/S: 124-2APP
Cupertino, CA 95014
USA

ATTN: Marcus East
App Name: 快樂健康+
App ID: 1317204377

Once you’ve shipped the hardware, please reply to this message with the shipping carrier and tracking information. Once we have received the hardware, we will continue your app’s review.

IMPORTANT: for non-US Developers

To avoid delays with US Customs, please provide the following information with your shipment (required for all radio-frequency devices imported in the US):

– Description of the equipment
– Quantity
– Device Model/Type Name or Number
– FCC ID
– Original Manufacturer’s Name and Address

Please use FCC form 740 for details on how to provide this information.

Remember:

* A separate FCC Form 740 must be used for each different radio-frequency device or component in the shipment; however, a form is not required for subassemblies, parts, or components of radio-frequency devices.

* The form may be completed by the shipper or recipient, but if the form is not sent with the original shipping documents by the shipper, the shipment may be delayed in customs.

* Ensure all serial and ID numbers are available as well as the name and address of the original manufacturer.

以上問題,2017年11月的時光都耗在這裡啦⋯⋯

之後送審更新版,都不到一天就審核通過!

話說,Apple拿到藍芽裝置且測試過後,不會寄送回來給開發者呢⋯⋯

參考:

標籤雲