สรุป Apple Watch: บทนำคุณสมบัติสำหรับนักพัฒนา iOS
เผยแพร่แล้ว: 2022-03-11มีความกังวลใจมากมายเกี่ยวกับ Apple Watch SDK ที่ประกาศที่ WWDC เมื่อเดือนมิถุนายนที่ผ่านมาและเพิ่งเปิดตัวเมื่อไม่นานมานี้
นี่เป็นเพียงรอบแรกที่มีฟังก์ชันจำกัด Apple Watch v2 จะตามมา แต่ไม่ใช่ในเร็วๆ นี้ ดังนั้นนักพัฒนา iOS ที่มองการณ์ไกลจึงควรเตรียมพร้อมที่จะรอสักสองสามเดือน
ความรู้สึกในหมู่นักพัฒนามีความหลากหลายอย่างมาก นักพัฒนา iOS จำนวนมากผิดหวังกับข้อจำกัดมากมายที่กำหนดโดย Apple Watch SDK และคุณสมบัติของมัน ในอีกด้านหนึ่ง พวกเราหลายคนรู้สึกตื่นเต้น ในขณะที่คนอื่นๆ อยู่ไม่ไกลจากตำแหน่งที่เป็นกลางเกินไป แต่ท้ายที่สุด ทุกคนก็มีความสุขที่ได้ของเล่นชิ้นใหม่ให้เล่น
สิ่งหนึ่งที่ดึงดูดสายตาคือการกล่าวถึงผู้ใช้ Apple Watch พวกเขาไม่ใช่ ผู้ใช้ หรือผู้ ใช้มือถือ หรือผู้ใช้ ที่ ดู หรือผู้ ดู (ที่มีความแปลกใหม่เพียงเล็กน้อย) พวกเขาเป็นเพียง ผู้สวมใส่ คำที่ฟังดูแปลก ๆ เพราะถ้าผู้ ใช้ใช้ , ส่อให้เห็นว่าเขาโต้ตอบ, ผู้สวมใส่ สวม และนั่นฟังดูเหมือนเป็นการใช้งานแบบพาสซีฟ แน่นอนว่า Apple Watch นั้นยังห่างไกลจากการเป็นอุปกรณ์แบบพาสซีฟ โดยผสมผสานคุณสมบัติดั้งเดิมของนาฬิกาเข้ากับตัวเลือกขั้นสูงที่ใช้เทคโนโลยีสมัยใหม่ โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับ iPhone ไม่นานมานี้เองที่โทรศัพท์เริ่มเป็นมากกว่าโทรศัพท์ - ประวัติศาสตร์กำลังซ้ำรอย
อย่างไรก็ตาม ในตอนท้าย ชื่อ ผู้สวมใส่ ดูเหมือนจะเป็นทางเลือกที่ชาญฉลาด อย่างน้อยเมื่อเขียนเรื่องราวของผู้ใช้ ฉันไม่จำเป็นต้องระบุว่า “ในฐานะผู้ ใช้ Apple Watch ฉันต้องการ …” แบบเต็ม ฉันสามารถย่อให้สั้นลงว่า “ในฐานะ ผู้สวมใส่ ฉันต้องการ …” - มีความกำกวมน้อยลง
อุปกรณ์และ UI
การละเว้นคุณสมบัติทั้งหมดของ Apple Watch ที่ไม่เกี่ยวข้องกับการพัฒนาอย่างเข้มงวด ปัญหาที่สำคัญที่สุดที่นักออกแบบและนักพัฒนาต้องรับมือคือขนาด - อันที่จริงแล้ว Apple Watch มี 2 รุ่นที่แตกต่างกัน:
- หน้าจอ 38 มม. ความละเอียด 272x340 พิกเซล
- หน้าจอ 42 มม. ความละเอียด 312x390 พิกเซล
ด้วยจอเรตินาทั้งสองกรณี
จำเป็นต้องพูด นักพัฒนา iOS จะต้องมั่นใจว่าแอปพลิเคชันจะดูดีในทั้งสองเวอร์ชัน
การเชื่อมต่อ Apple Watch
Apple Watch สื่อสารกับ iPhone สหายผ่าน Bluetooth 4.0 และเปิดใช้งาน NFC ด้วย เห็นได้ชัดว่าไม่มีการเชื่อมต่อ WiFi แม้ว่าจะสามารถเชื่อมต่อผ่าน iPhone และใช้ทั้ง WiFi และการเชื่อมต่อข้อมูลมือถือ แต่ในข้อมูลข่าว Apple ระบุอย่างชัดเจนว่ายังมี Wi-Fi 802.11b/g ด้วย
การโต้ตอบกับผู้ใช้
การโต้ตอบของผู้ใช้ (หรือการโต้ตอบของผู้สวมใส่ หากต้องการ) สามารถเกิดขึ้นได้ 4 วิธี:
- สัมผัสง่ายๆ: การแตะที่ปุ่มเป็นตัวอย่างทั่วไป
- แรงสัมผัส: เปิดใช้งานโดยใช้แรงมากขึ้นเมื่อแตะหน้าจอค้างไว้ คล้ายกับการคลิกเมาส์ขวาบนพีซี จะแสดงเมนูตามบริบท (มีไม่เกิน 4 รายการ)
- ท่าทาง: ปัดแนวตั้งเพื่อเลื่อน, ปัดแนวนอนเพื่อเลื่อนไปมาระหว่างหน้า, ปัดขอบซ้ายเพื่อย้อนกลับ
- เม็ดมะยมดิจิทัล: อินพุตฮาร์ดแวร์ที่ใช้สำหรับการเลื่อนแบบละเอียด
มีข้อจำกัดบางประการเกี่ยวกับการโต้ตอบของผู้ใช้ โดยเฉพาะอย่างยิ่งเกี่ยวกับท่าทางสัมผัส:
- ถูกกำหนดไว้ล่วงหน้า ดังนั้นจึงไม่รองรับท่าทางสัมผัสที่กำหนดเอง
- ไม่รองรับมัลติทัช ดังนั้นอย่าบีบนิ้วเพื่อซูมหรือท่าทางที่คล้ายกันซึ่งต้องใช้มากกว่าหนึ่งนิ้ว
นี่คือตัวอย่าง เมนูตามบริบท จาก Apple WatchKit Guide
หน้าจอผู้ใช้
เมื่อพูดถึง UI ของ Apple Watch มีข้อจำกัดหลายประการที่กำหนดโดยขนาดหน้าจอที่ลดลง โดยตัวเลือกการออกแบบ และในหลายกรณีเป็นผลสืบเนื่องมาจากฮาร์ดแวร์พื้นฐาน เราคาดว่าบางส่วนจะเปลี่ยนแปลงไปในทางที่ดีขึ้นในอนาคตของ SDK แม้ว่าจะไม่สามารถคาดการณ์หรือคาดการณ์สิ่งที่จะเปลี่ยนแปลงได้
ข้อจำกัดแรกคือเกี่ยวกับวิธีการใช้งานส่วนต่อประสานผู้ใช้: ผ่านกระดานเรื่องราวเท่านั้น
ระบบนำทาง Apple Watch
WatchKit นำเสนอสองวิธีพิเศษร่วมกันในการนำทางระหว่างมุมมองของแอพ Apple Watch:
- โมเดลการนำทางแบบลำดับชั้น คล้ายกับที่ใช้ใน iOS โดยมีมุมมองซ้อนกันระหว่างการนำทาง
- โมเดลตามหน้าแบบเรียบ ซึ่งผู้ใช้สามารถนำทางระหว่างหน้าต่างๆ ได้โดยการปัดไปทางซ้ายและขวา
ขออภัย ไม่สามารถรวมโมเดลการนำทางทั้งสองนี้ในแอปเดียวกันได้ ต้องเลือกและใช้หนึ่งในนั้นตลอดทั้งแอป
อย่างไรก็ตาม ตัวควบคุมอินเทอร์เฟซใดๆ สามารถนำเสนอตัวควบคุมอินเทอร์เฟซแบบโมดอล ซึ่งสามารถเป็นตัวควบคุมอินเทอร์เฟซเดียว หรือตัวควบคุมอินเทอร์เฟซหลายตัว จัดเรียงโดยใช้โมเดลการนำทางหน้า
องค์ประกอบ UI
มีองค์ประกอบอินเทอร์เฟซที่แตกต่างกัน 11 แบบ:
- ปุ่ม
- ตัวเลื่อน
- ภาพ
- ฉลาก
- ตัวคั่น
- ตัวเลื่อน
- สวิตซ์
- โต๊ะ
- วันที่: แสดงวันที่หรือเวลาปัจจุบันโดยอัตโนมัติ
- ตัวจับเวลา: แสดงตัวจับเวลาถอยหลังอัพเดทอัตโนมัติ
- กลุ่ม: คอนเทนเนอร์สำหรับส่วนประกอบย่อยหนึ่งรายการขึ้นไป
- แผนที่: การแสดงแผนที่แบบไม่โต้ตอบ สามารถเลือกด้วยคำอธิบายประกอบสูงสุด 5 รายการ
เลย์เอาต์
คอมโพเนนต์ กลุ่ม สามารถใช้เพื่อรวมองค์ประกอบ UI ของ Apple Watch ในรูปแบบ แนวตั้ง หรือ แนวนอน องค์ประกอบจะถูกจัดวางโดยอัตโนมัติขึ้นอยู่กับขนาดขององค์ประกอบ มีระดับความยืดหยุ่นบางส่วนที่นี่ เนื่องจากกลุ่มสามารถซ้อนกันได้
ขออภัย การจัดวางอัตโนมัติไม่พร้อมใช้งาน แต่เมื่อพิจารณาว่าอินเทอร์เฟซผู้ใช้นั้นง่ายกว่ามากเมื่อเทียบกับ iOS ที่เป็นคู่กัน ก็อาจไม่ใช่การสูญเสียครั้งใหญ่
สำหรับรายการ องค์ประกอบของ ตาราง จะสร้างและจัดการเนื้อหาโดยใช้โมเดลคอลัมน์เดียว เช่นเดียวกับ UITableView อย่างไรก็ตาม ไม่ได้ใช้รูปแบบการมอบหมาย - แหล่งข้อมูลจะถูกส่งไปยังตารางโดยตรงโดยการระบุจำนวนแถวก่อน แล้วจึงเริ่มต้นเนื้อหาของแต่ละแถวในลูป for ในแง่บวก คุณยังสามารถใช้แถวตารางที่กำหนดเองได้ (เช่น เซลล์ในศัพท์แสงของ iOS)
เหลือบ
ภาพรวมเป็นแบบอ่านอย่างเดียว หน้าเดียว และมุมมองที่ไม่สามารถเลื่อนได้ ใช้สำหรับแสดงภาพรวมของข้อมูลเฉพาะแอปที่เกี่ยวข้องในเวลาที่เหมาะสม ไม่อนุญาตให้ผู้ใช้โต้ตอบ ยกเว้นเหตุการณ์การแตะ แตะที่การ ชำเลืองมอง ก็จะเปิดแอปขึ้นมา โดยสามารถเลือกให้บริบทเพื่อให้แอปแสดงตัวควบคุมอินเทอร์เฟซเฉพาะได้
ตัวอย่างเช่น แอพพยากรณ์อากาศของ Apple Watch สามารถใช้ Glance เพื่อแสดงอุณหภูมิปัจจุบัน ตำแหน่ง ฯลฯ เมื่อแตะแอปนั้น แอพจะเปิดขึ้นโดยแสดงข้อมูลโดยละเอียดเพิ่มเติม
นี่คือตัวอย่างโดยย่อจากคู่มือ Apple WatchKit อย่างเป็นทางการ

การแจ้งเตือน Apple Watch
การแจ้งเตือนมี 2 แบบ: แบบ สั้น และแบบ ยาว
การแจ้งเตือน สายตาสั้น ใช้เพื่อเตือนผู้สวมใส่ว่ามีบางอย่างเกิดขึ้น และจะปิดโดยอัตโนมัติเมื่อลดข้อมือลง เลย์เอาต์นั้นเรียบง่ายมาก และประกอบด้วยไอคอนแอพ ชื่อแอพ และชื่อการแจ้งเตือน
การยกข้อมือไว้ครู่หนึ่งหรือแตะการแจ้งเตือนการมองสั้นๆ อย่างชัดแจ้ง จะกลายเป็นการ แจ้งเตือนการมองแบบยาว การแจ้งเตือนประเภทนี้ให้รายละเอียดเพิ่มเติม และสนับสนุนการโต้ตอบของผู้ใช้ผ่านปุ่มที่ปรับแต่งได้ ปุ่มเหล่านี้สามารถส่งการแจ้งเตือนไปยังแอปพลิเคชัน ต่างจากการแจ้งเตือนแบบสั้น ผู้ใช้ต้องยกเลิกการแจ้งเตือนแบบยาวโดยชัดแจ้งโดยแตะปุ่มที่แสดงโดยอัตโนมัติที่ด้านล่างของมุมมอง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การแจ้งเตือนของ Apple Watch ได้ที่นี่
การพัฒนา
สถาปัตยกรรม
ดาวน์โหลดเวอร์ชัน Xcode ที่รองรับ WatchKit (ปัจจุบันเป็นเวอร์ชัน 6.2 เบต้า) และพยายามเริ่มต้นกับโปรเจ็กต์ WatchKit โดยไม่ต้องอ่านเอกสารใดๆ นักพัฒนาอาจรู้สึกสับสนเพราะไม่มีเทมเพลต WatchKit:
ไม่มีแอปพลิเคชันนาฬิกาแบบสแตนด์อโลนและสามารถเพิ่มแอป Watch เป็นเป้าหมายใหม่ให้กับแอปพลิเคชัน iOS ที่มีอยู่เท่านั้น
เหตุผลที่ขึ้นอยู่กับสถาปัตยกรรมและวิธีที่แอปนาฬิกาโต้ตอบกับแอป iOS ที่เกี่ยวข้อง:
เมื่อเปิดแอปบนนาฬิกา ส่วนขยาย iOS ที่แสดงร่วมจะเปิดขึ้นโดยอัตโนมัติ ทั้งคู่ทำงานประสานกัน โดยแอปนาฬิกาจะแสดงเนื้อหาต่อผู้สวมใส่และตอบสนองต่อการโต้ตอบ ในขณะที่ส่วนขยาย iOS ทำทุกอย่าง ที่จริงแล้ว ไม่มีการเรียกใช้รหัสแอปพลิเคชันบนนาฬิกา: การประมวลผลทั้งหมดถูกกำหนดให้กับส่วนขยาย iOS
โมเดลนี้คล้ายกับโมเดลเว็บแอปพลิเคชันของเบราว์เซอร์ <-> ซึ่งใช้ตรรกะของโดเมนที่ฝั่งเซิร์ฟเวอร์ และฝั่งไคลเอ็นต์มีหน้าที่แสดงเนื้อหาต่อผู้ใช้และตอบสนองต่อการกระทำของผู้ใช้
แอป Watch ที่ติดตั้งบนอุปกรณ์ประกอบด้วยกระดานเรื่องราวและทรัพยากรสแตติกที่เกี่ยวข้องทั้งหมด บรรจุในชุดรวม บันเดิลนี้เป็นแบบสแตติก หมายความว่าไม่สามารถเพิ่มหรือเปลี่ยนแปลงทรัพยากร มุมมอง รูปภาพ ฯลฯ ได้ในขณะใช้งานจริง
โมเดลไคลเอ็นต์-เซิร์ฟเวอร์แบบคงที่นี้มีข้อจำกัดหลายประการสำหรับนักพัฒนา iOS ที่ต้องการเพิ่มแอป Watch ลงในรายการของพวกเขา และอาจเป็นหนึ่งในสาเหตุหลักที่ทำให้นักพัฒนาบางคนไม่ตอบสนองในเชิงบวก ข้อสังเกตยอดนิยมอีกประการหนึ่งเกี่ยวกับแอนิเมชั่น: พวกมันไม่รองรับ วิธีเดียวที่จะเลียนแบบแอนิเมชั่นคือการรวมเฟรมแต่ละเฟรมไว้ในแอพนาฬิกา จากนั้นจึงจำลองแอนิเมชั่นด้วยการแสดงภาพตามลำดับ ข่าวดีก็คือการตั้งชื่อเฟรมตามลำดับคุณสามารถทำให้แอนิเมชั่นเป็นอัตโนมัติได้โดยตรงจากตัวสร้างอินเทอร์เฟซ แม้ว่าจะสามารถทำได้จากโค้ดด้วยการเรียกใช้เมธอดการควบคุมรูปภาพเพียงครั้งเดียว
อย่างไรก็ตาม Apple ได้ประกาศไปแล้วว่าเวอร์ชันใหม่จะออกในปีหน้าในบางครั้ง พร้อมรองรับแอปพลิเคชั่นดั้งเดิม ซึ่งยังไม่มีรายละเอียดเพิ่มเติม
Apple Watch Framework: ดูอย่างรวดเร็ว
WatchKit ไม่ได้ใช้ สืบทอดหรือเชี่ยวชาญ UIKit เฟรมเวิร์กใหม่ได้รับการออกแบบมาโดยเฉพาะและปรับให้เหมาะสมสำหรับนาฬิกาสำหรับจอแสดงผลขนาดเล็กและสำหรับฮาร์ดแวร์ที่จำกัด เฟรมเวิร์กประกอบด้วย 15 คลาสเท่านั้น โดย 12 คลาสเป็นคอมโพเนนต์ UI (ป้ายกำกับ ปุ่ม ฯลฯ)
คลาสที่สำคัญที่สุดที่เปิดเผยโดยเฟรมเวิร์กคือ WKInterfaceController ซึ่งเป็น WatchKit คู่ของ UIViewController ดังนั้นสิ่งที่เรียกว่า ตัวควบคุมการดู ใน iOS (และ OSX) ใน Apple Watch คือ ตัวควบคุมอินเทอร์เฟซ
โดยไม่ต้องขุดลึกเกินไป การปรับปรุงที่เห็นได้ชัดเจนที่สุดเหนือ UIKit จากมุมมองของนักพัฒนา Apple คือการจัดตั้งรูปแบบเพื่อส่งข้อมูลระหว่างตัวควบคุมอินเทอร์เฟซ ดูตัวเริ่มต้นอย่างรวดเร็ว:
Swift init(context: AnyObject?) // context from pushing controller or nil
เผยให้เห็นว่าเป็นไปได้ที่จะจัดเตรียมอ็อบเจ็กต์ตามอำเภอใจให้กับอินสแตนซ์คอนโทรลเลอร์อินเทอร์เฟซ (เรียกว่า context ใน API ทั้งหมด) ทำให้ง่ายขึ้นและเป็นมาตรฐานในการส่งข้อมูลจากคอนโทรลเลอร์อินเทอร์เฟซหนึ่งไปยังอีกตัวหนึ่ง ข้อเสียเพียงอย่างเดียวคือวัตถุนั้นไม่ใช่ประเภททั่วไป แต่เป็น AnyObject ทึบแสงซึ่งต้องลดระดับลงเป็นประเภทที่คาดไว้ภายในตัวเริ่มต้นของตัวควบคุมอินเทอร์เฟซปลายทาง นั่นอาจเป็นการแลกเปลี่ยนสำหรับการยังคงมี (และอาจต้องการด้วย) เพื่อใช้ Objective C ต่อไป
วงจรชีวิตตัวควบคุมอินเทอร์เฟซจะง่ายขึ้นหากเปรียบเทียบกับตัวควบคุมการดูคู่กัน ซึ่งประกอบด้วยการเปลี่ยน 3 ครั้งเท่านั้น:
-
init: เรียกเมื่อวัตถุถูกสร้างอินสแตนซ์ -
willActivate: เรียกใช้เมื่อเนื้อหากำลังจะแสดง -
didDeactivate: เรียกใช้เมื่ออินเทอร์เฟซเพิ่งถูกซ่อน
นอกจากการแสดงเนื้อหาแก่ผู้ใช้แล้ว ตัวควบคุมอินเทอร์เฟซยังรับผิดชอบ:
- การจัดการการโต้ตอบกับผู้ใช้
- การจัดการเมนูตามบริบท
- ประสานงานกิจกรรมแจกของ
- ตอบกลับการแจ้งเตือน
Apple WatchKit พร้อมหรือยัง
ด้วยข้อจำกัดหลายประการ ชุดนาฬิกาอาจปรากฏเป็นผลิตภัณฑ์ที่ยังไม่บรรลุนิติภาวะ และในความเป็นจริงมันเป็น ไม่รองรับแอปพลิเคชันนาฬิกาแบบเนทีฟ ไม่ต้องพูดถึงว่ายังไม่มีอุปกรณ์นาฬิกาในตลาด ดังนั้นนักพัฒนาจึงยังไม่สามารถทดสอบแอปของตนได้ และมีความรู้สึกที่แท้จริงและข้อเสนอแนะเกี่ยวกับวิธีการทำงานของแอป
ตกลง มีตัวจำลอง ซึ่งจริง ๆ แล้วไม่ใช่ตัวจำลองอิสระ แต่สามารถเข้าถึงได้เป็นจอแสดงผลภายนอกสำหรับตัวจำลอง iOS (ผ่านเมนูฮาร์ดแวร์ -> จอแสดงผลภายนอก) แต่เครื่องจำลองไม่สามารถแทนที่อุปกรณ์จริงได้ ดีในระหว่างการพัฒนาและการดีบั๊ก แต่ยังไม่เพียงพอ
WatchKit เป็นเพียงตัวอย่าง รุ่นเบต้า อาหารเรียกน้ำย่อย ซึ่งจะมีวิวัฒนาการไปพร้อมกับการเปิดตัวใหม่ทุกครั้ง นักพัฒนา iOS มีเวอร์ชันแรกแล้ว มาลองเล่นกันและพยายามใช้ให้เกิดประโยชน์สูงสุด
