WWDC 2018 ไดอารี่ของนักพัฒนา iOS
เผยแพร่แล้ว: 2022-03-10ขอบเขตดั้งเดิมของฤดูร้อนในสหรัฐอเมริกาคือวันรำลึกและวันแรงงาน แต่นักพัฒนา iOS ทำเครื่องหมายฤดูร้อนโดย WWDC และการเปิดตัว iPhone แม้ว่าอากาศจะเย็นและมีฝนตกในสัปดาห์นี้ในนิวยอร์ค แต่ฉันก็ยังอยู่ในอารมณ์ของฤดูร้อนและตั้งตารอการต่ออายุในฤดูร้อนนั้นและ WWDC สัญญา
เป็นเช้าวันที่ 4 มิถุนายน และฉันกำลังตรวจสอบบันทึกย่อของฉันจาก WWDC 2017 ปีที่แล้ว ฉันเขียนว่า ARKit และ Core ML เป็นไฮไลท์สำคัญสองประการ รู้สึกสดชื่นที่ได้เห็น Apple มุ่งเน้นไปที่ Machine Learning (ML) แต่ในช่วงที่เหลือของปี 2017 นั้นแทบไม่มีการติดตามผลมากนัก ARKit กลับกลายเป็นจุดสนใจ แต่ไม่มีแอปนักฆ่า (อาจเป็น Pokemon Go แต่นั่นก็เคยเป็นที่นิยมมาก่อน ARKit) . Apple ไม่ได้เพิ่มในไลบรารีเริ่มต้นของรุ่น Core ML ที่สามารถดาวน์โหลดได้หลังจากประกาศ Core ML
Apple ได้เปิดตัว Turi Create และ Lobe ได้เปิดตัวเครื่องสร้างโมเดล Core ML ใหม่ที่น่าสนใจเมื่อเดือนที่แล้ว ในพื้นที่ Apple/ML ผู้สร้าง Swift, Chris Lattner กำลังใช้แนวทางที่แตกต่างกับ Swift สำหรับ TensorFlow แต่จากภายนอก ดูเหมือนว่า Core ML จะมีการใช้งานที่ชัดเจนอย่างหนึ่ง: การจัดประเภทรูปภาพ ดูเหมือนจะไม่มีพลังงานเหลือเฟือในการสำรวจแอปพลิเคชั่นที่แตกต่างกันอย่างมาก (แม้ว่าเราทุกคนรู้ว่า ML เป็นแกนหลักของรถยนต์ที่ขับด้วยตนเองและการสาธิตแบบหวือหวาเช่น Google ดูเพล็กซ์)
อีกวิธีหนึ่งที่ Apple ใช้ ML อยู่ใน Siri และเมื่อต้นปีนี้ ฉันได้เขียนเกี่ยวกับ SiriKit และกล่าวถึงข้อบกพร่องที่รับรู้และความเป็นจริงของมันเมื่อเปรียบเทียบกับ Alexa และ Google เมื่อต้นปีนี้ ประเด็นหนึ่งที่ฉันสำรวจคือการที่ Siri เน้นที่ความตั้งใจที่กำหนดไว้ล่วงหน้าจำกัดช่วงของมัน แต่ไม่ได้สร้างความแม่นยำที่สัญญาไว้ซึ่งคุณอาจได้รับจากการโฟกัสที่มีขอบเขต
การเปิดตัว HomePod เมื่อปีที่แล้วเน้นย้ำถึงความทุกข์ยากของ Siri และการสำรวจความพึงพอใจของลูกค้าที่มีการรายงานอย่างกว้างขวางแสดงให้เห็นความพึงพอใจ 98% กับ iPhone X แต่มีเพียง 20% ที่พึงพอใจกับ Siri
ทั้งหมดนี้อยู่ในความคิดของฉัน ส่วนตัวฉันหวังว่าจะได้ยินว่า Apple จะทำการปรับปรุงที่สำคัญบางอย่างใน AR, ML และ Siri โดยเฉพาะในฐานะนักพัฒนา iOS ฉันต้องการเห็นโมเดล Core ML อื่นๆ อีกมากมาย ซึ่งครอบคลุมมากกว่าการจัดหมวดหมู่รูปภาพ และความช่วยเหลือเพิ่มเติมในการสร้างโมเดล สำหรับ Siri ฉันต้องการเห็นความตั้งใจมากกว่านี้และอาจเป็นสิ่งที่บ่งชี้ว่าความตั้งใจจะเป็นสิ่งที่จะเพิ่มเข้ามาตลอดทั้งปี มันเป็นช็อตยาว แต่สำหรับ AR ขั้นตอนต่อไปคืออุปกรณ์ แต่ในระหว่างนี้ ฉันหวังว่าจะได้ความแม่นยำเชิงพื้นที่เพิ่มขึ้น
สุดท้าย ฉันชอบหนังสือ Xcode Playgrounds และ iPad Playground แต่หนังสือเหล่านั้นต้องเร็วและเสถียรกว่านี้มาก ฉันก็เลยหวังว่าจะมีบางอย่างในนั้นด้วย
ในตอนเช้าของ WWDC ฉันทวีตสิ่งนี้:
นี่ไม่ใช่คำทำนาย เป็นเพียงรายการของสิ่งที่ฉันต้องการใช้ในปี 2560 แต่พบว่ามันมีประสิทธิภาพต่ำหรือยากเกินไปสำหรับฉันที่จะเริ่มต้น และหวังว่า Apple จะทำการปรับปรุงบางอย่าง
แผนของฉันสำหรับวันนี้คือการรับชมการถ่ายทอดสดประเด็นสำคัญ และจากนั้นไปดู Platforms State of the Union ข้อมูลเหล่านี้จะให้ภาพรวมที่ดีเกี่ยวกับสิ่งที่ควรให้ความสนใจในช่วงที่เหลือของสัปดาห์
สิ้นสุดวันที่ 1: ประเด็นสำคัญและสถานะแพลตฟอร์มของสหภาพ
วันแรกของ WWDC เป็นประเด็นสำคัญซึ่งมีขึ้นเพื่อการบริโภคของสาธารณะ และ Platforms State of the Union ซึ่งเป็นภาพรวมของงานทั้งหมด พร้อมรายละเอียดบางส่วนสำหรับนักพัฒนาเพื่อให้พวกเขาสามารถเลือกเซสชันที่จะเข้าร่วมได้
สรุปประกาศเด่นของนักพัฒนาซอฟต์แวร์ที่ไม่ใช่ iOS
WWDC ไม่ได้เกี่ยวกับการพัฒนา iOS ทั้งหมด ดังนั้นนี่คือรายการโดยย่อของสิ่งอื่นๆ ที่เกิดขึ้นกับแพลตฟอร์มอื่นๆ หรือที่ไม่ได้เน้นที่นักพัฒนามากนัก
- เพื่อเอามันออกไปให้พ้นทาง ไม่มีประกาศเกี่ยวกับฮาร์ดแวร์ เลย ไม่มีการแสดงตัวอย่างและไม่มีการอัพเดทบน Mac Pro เราจะต้องรอ iPhone และกิจกรรมติดตามในฤดูใบไม้ร่วง
- iOS 12 มีแอพคำสั่งลัดใหม่ที่ดูเหมือนว่าจะเป็นผลมาจากการเข้าซื้อกิจการเวิร์กโฟลว์ เป็นวิธีการ "เขียนสคริปต์" ชุดขั้นตอนผ่านการลากและวาง คุณยังสามารถกำหนดทางลัดให้กับคีย์เวิร์ดของ Siri ได้ ซึ่งจะอธิบายไว้ด้านล่าง
- iOS จะ จัดกลุ่มการแจ้งเตือน ที่มาจากแอพเดียวกันโดยอัตโนมัติ และให้คุณดำเนินการกับการแจ้งเตือนเหล่านั้นเป็นกลุ่ม
- ตอนนี้ Animojis สามารถเลียนแบบว่าคุณยื่นลิ้นออกมา และ Memoji ใหม่คือใบหน้ามนุษย์ที่กำหนดค่าได้สูง ซึ่งคุณสามารถปรับแต่งให้ดูเหมือนตัวคุณเองได้
- FaceTime รองรับวิดีโอแชทกลุ่ม ได้ถึง 32 คน
- มี แอพ Screen Time ใหม่ที่ให้คุณรายงานเกี่ยวกับโทรศัพท์และการใช้งานแอ พของคุณ (เพื่อช่วยให้คุณควบคุมตัวเองและฟุ้งซ่านน้อยลง) นอกจากนี้ยังเป็นพื้นฐานของการควบคุมโดยผู้ปกครองแบบใหม่
- Apple TV ได้รับการอัปเดตเล็กน้อย: รองรับ Dolby Atmos และ โปรแกรมรักษาหน้าจอใหม่ที่นำมาจากสถานีอวกาศนานาชาติ
- Watch มีโหมดการแข่งขัน เพื่อท้าทายผู้อื่นให้ท้าทายเกี่ยวกับการออกกำลังกาย นอกจากนี้ยังพยายาม ตรวจหาจุดเริ่มต้นและจุดสิ้นสุดของการออกกำลังกายโดยอัตโนมัติ ในกรณีที่คุณลืมเริ่มหรือหยุด และตอนนี้มีการออกกำลังกายแบบไต่เขาและโยคะ
- นาฬิกายังมีโหมดวอล์คกี้ทอล์คกี้ใหม่ที่คุณสามารถเปิดใช้งานสำหรับผู้ติดต่อที่เชื่อถือได้
- มี SDK เสียงเพิ่มเติมที่มีอยู่ใน Watch และแอป Podcasts ของ Apple ก็พร้อมใช้งานแล้ว ฉันคาดว่าแอปพอดแคสต์ของบริษัทอื่นจะใช้ประโยชน์จาก SDK ใหม่เหล่านี้เช่นกัน
- Mac ได้จุดยึดของงาน (ซึ่งหวังว่าจะเป็นการบ่งชี้ถึงความสนใจครั้งใหม่) จะเรียกว่า macOS Mojave และมีโหมดมืด
- Mac App Store มีการอัปเดตครั้งใหญ่ แต่ที่น่าสังเกตคือ ตอนนี้ได้รับการดูแล ด้านภาพและเนื้อหาแบบเดียวกันกับที่ iOS App Store ได้รับเมื่อปีที่แล้ว มีการเปลี่ยนแปลงมากมายในแซนด์บ็อกซ์ที่ Panic ตัดสินใจย้าย Transit กลับมาที่นั่น
- Quick Look ใน Finder มีการดำเนินการง่ายๆ บางอย่างที่ คุณสามารถทำได้กับไฟล์ (เช่น การหมุนภาพ) และปรับแต่งได้ผ่าน Automator
- Mojave จะเป็น macOS เวอร์ชันสุดท้ายที่รองรับแอปและเฟรมเวิร์กแบบ 32 บิต ซึ่งหมายความว่า Quick Time Framework จะหยุดให้บริการ ดูเหมือนว่าจะถูกแทนที่ด้วยคุณสมบัติการจับภาพวิดีโอบางอย่างในระบบปฏิบัติการ
- Apple ประกาศว่าพวกเขากำลังใช้ พอร์ต UIKit ภายในเพื่อสร้างแอพ Mac และแสดงพอร์ตของหุ้น ข่าวสาร หน้าแรก และวอยซ์เมโม กรอบงานใหม่จะออกในปี 2019
นักพัฒนา iOS ประกาศฉันตื่นเต้นมากที่สุด
นักพัฒนา iOS ก็ได้รับข่าวดีเช่นกัน พวกเขาตีสี่ประเด็นหลักที่ฉันต้องการเห็นการปรับปรุงใน:
- ตอนนี้ SiriKit มี ความตั้งใจที่กำหนดเอง ซึ่งเปิดโอกาสความเป็นไปได้ไม่น้อย
- Create ML เป็นวิธีใหม่ในการใช้ Xcode Playgrounds เพื่อฝึกโมเดลผ่าน การเรียนรู้การถ่ายโอน ซึ่งช่วยให้คุณสามารถ เพิ่มโมเดลที่มีอยู่ด้วยข้อมูลการฝึกของคุณเอง
- สนามเด็กเล่น Xcode ตอนนี้ให้คุณ เพิ่มโค้ดที่ด้านล่างของหน้าและเรียกใช้โดยไม่ต้องรีสตาร์ท เป็นเรื่องยากที่จะทราบว่า Playgrounds จะเสถียรกว่านี้หรือไม่จนกว่าเราจะได้รับการเปิดตัวจริงในเดือนกันยายน แต่สิ่งนี้จะทำให้การลองโค้ดเร็วขึ้นมาก
- ARKit 2 ได้รับการประกาศพร้อมกับ รูปแบบไฟล์ Augmented Reality ใหม่ที่เรียกว่า USDZ ซึ่งเปิดและได้รับการพัฒนาด้วย Adobe และ Pixar Adobe ประกาศการสนับสนุนเครื่องมือบางอย่างแล้ว จะช่วยให้ผู้ใช้และนักพัฒนาสามารถจัดเก็บและแบ่งปันทรัพย์สินและประสบการณ์ AR นอกจากนี้ ARKit 2 ยังช่วยให้อุปกรณ์หลายเครื่องอยู่ในสภาพแวดล้อม AR เดียวกันและรองรับการตรวจจับวัตถุ 3 มิติ
เราไม่ได้รับอุปกรณ์ AR แต่รู้สึกเหมือนจะได้รับในเร็วๆ นี้ และต้องมาจาก Apple (ไม่ใช่บุคคลที่สาม) เนื่องจากการเรียกใช้ ARKit ต้องใช้อุปกรณ์ iOS
การตั้งค่าเครื่องของคุณ
ทุกสิ่งที่คุณต้องการมีอยู่ในพอร์ทัลนักพัฒนาแล้ว หากต้องการใช้โค้ดในบทความ คุณต้องมี Xcode 10 Beta ฉันยังไม่แนะนำให้ใช้ iOS 12 Betas แต่ถ้าคุณต้องการจริงๆ ไปที่พอร์ทัลบนอุปกรณ์ของคุณและดาวน์โหลดโปรไฟล์การกำหนดค่า iOS 12 Beta
สิ่งสำคัญเพียงอย่างเดียวที่คุณต้องการให้อุปกรณ์ที่มีรุ่นเบต้าคือ ARKit 2 อย่างอื่นควรทำงานได้ดีพอในโปรแกรมจำลองของ Xcode 10 ในช่วงเบต้าแรก การสนับสนุนทางลัดของ Siri ในเครื่องจำลองมีจำกัด แต่ก็ยังมีเพียงพอที่จะคิดว่าจะได้รับการแก้ไขในรุ่นต่อๆ ไป
สิ้นสุดวันที่ 2: เล่นกับ Siri Custom Intents
ปีที่แล้ว ฉันได้เขียนวิธีที่คุณต้องการเพื่อให้เข้ากับความตั้งใจที่กำหนดไว้ล่วงหน้าของ Apple เพื่อใช้ SiriKit ในแอปของคุณ กลไกนี้เปิดตัวในปี 2559 และเพิ่มในปี 2560 และแม้กระทั่งระหว่างกิจกรรม WWDC แต่ชัดเจนว่าแนวทางที่กำหนดเองของ Amazon นั้นเหนือกว่าสำหรับการควบคุมเสียงในแอปที่หลากหลายมากขึ้น และ Apple ได้เพิ่มสิ่งนั้นใน SiriKit เมื่อสัปดาห์ที่แล้ว
เพื่อความชัดเจน นี่เป็นการใช้งานครั้งแรก ดังนั้นจึงยังไม่ครอบคลุมเท่าทักษะของ Alexa แต่เป็นการเปิดโอกาสให้กับ Siri ได้ไม่น้อย ดังที่ฉันได้กล่าวไปแล้วในบทความที่แล้ว ข้อจำกัดหลักของความตั้งใจที่กำหนดเองคือนักพัฒนาจำเป็นต้องแปลภาษาทั้งหมด SiriKit แก้ไขปัญหานี้เล็กน้อยโดยขอให้ผู้ใช้ระบุวลีที่ต้องการใช้ แต่ก็ยังมีการแปลที่จำเป็นสำหรับ Intent ที่กำหนดเองมากกว่า Intent ที่กำหนดไว้ล่วงหน้า
และพวกเขาสร้างขึ้นบนรากฐานเดียวกันกับความตั้งใจที่กำหนดไว้ล่วงหน้า ดังนั้นทุกสิ่งที่ฉันกล่าวถึงยังคงมีผล อันที่จริงฉันจะแสดงวิธีเพิ่มความตั้งใจที่กำหนดเองใหม่ให้กับ List-o-Mat แอพที่ฉันเขียนสำหรับบทความ SiriKit ดั้งเดิม
(ฟรี) การสนับสนุนทางลัดของ Siri หากคุณรองรับ Spotlight
หากคุณใช้ NSUserActivity
เพื่อระบุสิ่งต่าง ๆ ในแอพของคุณที่ผู้ใช้สามารถเริ่มต้นผ่านแฮนด์ออฟหรือการค้นหา การทำให้ Siri ใช้งานได้ก็เป็นเรื่องเล็กน้อยเช่นกัน
สิ่งที่คุณต้องทำคือเพิ่มบรรทัดต่อไปนี้ในวัตถุกิจกรรมของคุณ:
activity.isEligibleForPrediction = true
สิ่งนี้จะใช้ได้กับกิจกรรมที่เปิดใช้งาน Spotlight เท่านั้น (โดยที่ isEligibleForSearch
เป็น true
)
ตอนนี้เมื่อผู้ใช้ทำกิจกรรมนี้ จะถือว่าเป็นการ บริจาค เพื่อใช้ใน Siri Siri จะแนะนำกิจกรรมที่ทำบ่อยมากหรือผู้ใช้สามารถค้นหาได้ในแอปคำสั่งลัด ไม่ว่าในกรณีใด ผู้ใช้จะสามารถกำหนดวลีที่พูดของตนเองเพื่อเริ่มต้นได้ การสนับสนุนของคุณสำหรับการเริ่มกิจกรรมผ่าน Spotlight เพียงพอที่จะรองรับการเริ่มต้นผ่านทางลัด
ใน List-o-Mat เราสามารถทำให้รายการแต่ละรายการพร้อมใช้งานสำหรับ Spotlight และ Siri โดยการสร้างวัตถุกิจกรรมและกำหนดให้กับ ListViewController
ผู้ใช้สามารถเปิดผ่าน Siri ด้วยวลีของตนเอง
มันซ้ำซากในกรณีของเราเพราะเรามีความตั้งใจที่กำหนดไว้ล่วงหน้าสำหรับการเปิดรายการ แต่แอปส่วนใหญ่ไม่ค่อยโชคดีนักและตอนนี้ก็มีกลไกง่ายๆ นี้ ดังนั้น หากแอปของคุณมีกิจกรรมที่ไม่ได้รับการรองรับโดยเจตนาที่กำหนดไว้ล่วงหน้าของ Siri (เช่น การเล่นพอดแคสต์) คุณก็ทำให้กิจกรรมเหล่านั้นมีสิทธิ์ได้รับการคาดคะเนและไม่ต้องกังวลกับความตั้งใจที่กำหนดเอง
การกำหนดค่า SiriKit ให้ใช้ Custom Intent
หากคุณจำเป็นต้องใช้ความตั้งใจที่กำหนดเอง คุณจะต้องเพิ่ม SiriKit ในแอปของคุณ ซึ่งต้องมีการกำหนดค่าเล็กน้อย
ขั้นตอนทั้งหมดสำหรับการกำหนดค่า SiriKit สำหรับ Intent แบบกำหนดเองจะเหมือนกับ Intent ที่กำหนดไว้ล่วงหน้า ซึ่งมีรายละเอียดอยู่ในบทความ SiriKit ของฉันเกี่ยวกับ Smashing เพื่อสรุป:
- คุณกำลังเพิ่มส่วนขยาย ดังนั้นคุณต้องมี App ID ใหม่และโปรไฟล์การจัดเตรียมและความต้องการในการให้สิทธิ์ของแอปของคุณจึงต้องมี Siri เพิ่ม
- คุณอาจต้องการ App Group (เป็นวิธีที่ส่วนขยายและแอปสื่อสารกัน)
- คุณจะต้องมี Intent Extension ในโปรเจ็กต์ของคุณ
- มีคีย์ .plist เฉพาะของ Siri และสิทธิ์ของโปรเจ็กต์ที่คุณต้องอัปเดต
รายละเอียดทั้งหมดมีอยู่ในบทความ SiriKit ของฉัน ดังนั้นฉันจะครอบคลุมเฉพาะสิ่งที่คุณต้องการเพื่อรองรับความตั้งใจที่กำหนดเองใน List-o-Mat
การเพิ่มคำสั่ง Copy List ไปยัง List-o-Mat
Intent แบบกำหนดเองมีไว้เพื่อใช้เฉพาะในกรณีที่ไม่มี Intent ที่กำหนดไว้ล่วงหน้า และ Siri ก็มีรายการและการสนับสนุนงานมากมายใน Lists และ Notes Siri Domain
แต่วิธีหนึ่งในการใช้รายการคือเป็นเทมเพลตสำหรับกิจวัตรหรือกระบวนการที่ทำซ้ำๆ ในการทำเช่นนั้น เราจะต้องคัดลอกรายการที่มีอยู่และยกเลิกการเลือกรายการทั้งหมด Intents ของรายการในตัวไม่สนับสนุนการดำเนินการนี้
อันดับแรก เราต้องเพิ่มวิธีการดำเนินการด้วยตนเอง นี่คือตัวอย่างพฤติกรรมใหม่ใน List-o-Mat:
เพื่อให้พฤติกรรมนี้เรียกใช้ได้โดย Siri เราจะ "บริจาคตามความตั้งใจ" ซึ่งหมายความว่าเราจะแจ้ง iOS ทุกครั้งที่คุณทำเช่นนี้ จากนั้นในที่สุดจะเรียนรู้ว่าในตอนเช้า คุณต้องการคัดลอกรายการนี้และเสนอเป็นทางลัด ผู้ใช้ยังสามารถค้นหาความตั้งใจที่บริจาคและกำหนดวลีด้วยตนเอง
การสร้างความตั้งใจที่กำหนดเอง
ขั้นตอนต่อไปคือการสร้างความตั้งใจที่กำหนดเองใน Xcode มีเทมเพลตไฟล์ใหม่ ดังนั้น:
- เลือกไฟล์ → ไฟล์ใหม่ แล้วเลือก "ไฟล์คำจำกัดความของ SiriKit Intent"
- ตั้งชื่อไฟล์ ListOMatCustomIntents.intentdefinition และเลือกวางไฟล์ไว้ในเป้าหมาย App และ Intent Extension สิ่งนี้จะสร้างคลาสโดยอัตโนมัติในทั้งสองเป้าหมายที่ใช้โปรโตคอลเจตนา แต่มีการใช้งานพฤติกรรมที่กำหนดเองของคุณ
- เปิดไฟล์ คำจำกัดความ
- ใช้ปุ่ม + ที่ด้านล่างซ้ายเพื่อเพิ่มความตั้งใจและตั้งชื่อว่า "CopyList"
- ตั้งค่าหมวดหมู่เป็น "สร้าง" และกรอกชื่อและคำบรรยายเพื่ออธิบายเจตนา:
- เพิ่มพารามิเตอร์สตริงชื่อ "รายการ"
- เพิ่มประเภททางลัดด้วยพารามิเตอร์ list และตั้งชื่อว่า "Copy list"
หากคุณดูใน Intent plist คุณจะเห็นว่า Intent นี้ได้รับการกำหนดค่าสำหรับคุณแล้ว:
บริจาคตามเจตจำนง
เมื่อเราโต้ตอบกับผู้ใช้ในแอปที่เราต้องการให้ Siri ทราบ เราจะบริจาคให้ Siri Siri ติดตามข้อมูลตามบริบท เช่น เวลา วันในสัปดาห์ และแม้แต่ตำแหน่ง และหากสังเกตเห็นรูปแบบ ก็จะเสนอทางลัดให้กับผู้ใช้
เมื่อเราแตะเมนูคัดลอก ให้เพิ่มรหัสนี้:
@available(iOS 12, *) func donateCopyListInteraction(listName: String) { let copyListInteraction = CopyListIntent() copyListInteraction.list = listName copyListInteraction.suggestedInvocationPhrase = "Copy \(listName)" let interaction = INInteraction(intent: copyListInteraction, response: nil) interaction.donate { [weak self] (error) in self?.show(error: error) } }
นี่เป็นเพียงการสร้างวัตถุของคลาส CopyListIntent
ที่สร้างขึ้นโดยอัตโนมัติและบริจาคให้กับ Siri โดยปกติ iOS จะรวบรวมข้อมูลนี้และรอเวลาที่เหมาะสมในการแสดง แต่สำหรับการพัฒนา คุณสามารถเปิดแอปการตั้งค่า ไปที่ส่วนนักพัฒนา และเปิดการตั้งค่าการแก้ไขจุดบกพร่องของ Siri Shortcut
หมายเหตุ : ในการเขียนนี้ กับเบต้าแรก การตั้งค่าดีบักนี้ใช้ได้เฉพาะกับอุปกรณ์เท่านั้น ไม่ใช่ตัวจำลอง เนื่องจากการตั้งค่าอยู่ที่นั่น ฉันจึงคาดว่าจะเริ่มทำงานในรุ่นเบต้าเพิ่มเติม
เมื่อคุณทำเช่นนี้ คำสั่งลัดที่คุณบริจาคจะแสดงขึ้นในคำแนะนำโดย Siri ใน Spotlight
การแตะที่จะเรียกส่วนขยาย Intent ของคุณเนื่องจากเราอนุญาตให้ดำเนินการในเบื้องหลัง เราจะเพิ่มการสนับสนุนในครั้งต่อไป
การจัดการกับความตั้งใจที่กำหนดเอง
เรามีส่วนขยาย Intent อยู่แล้ว และเนื่องจากไฟล์ข้อกำหนด Intent ที่กำหนดเองถูกเพิ่มลงในไฟล์แล้ว ไฟล์นั้นจึงมีคลาส Intent ที่สร้างขึ้นด้วย สิ่งที่เราต้องทำคือเพิ่มตัวจัดการ
ขั้นตอนแรกคือการเพิ่มคลาสใหม่ ชื่อ CopyListIntentHandler
ให้กับส่วนขยาย นี่คือรหัส:
import Intents @available(iOS 12, *) class CopyListIntentHandler: ListOMatIntentsHandler, CopyListIntentHandling { func handle(intent: CopyListIntent, completion: @escaping (CopyListIntentResponse) -> Void) { // Find the list var lists = loadLists() guard let listName = intent.list?.lowercased(), let listIndex = lists.index(where: { $0.name.lowercased() == listName}) else { completion(CopyListIntentResponse(code: .failure, userActivity: nil)) return } // Copy the list to the top, and respond with success copyList(from: &lists, atIndex: listIndex, toIndex: 0) save(lists: lists) let response = CopyListIntentResponse(code: .success, userActivity: nil) completion(response) } }
Intent ที่กำหนดเองมีเพียงขั้นตอนการยืนยันและจัดการ (ไม่รองรับความละเอียดที่กำหนดเองของพารามิเตอร์) เนื่องจากค่าเริ่มต้น confirm()
ส่งคืนความสำเร็จ เราจะใช้ handle()
ซึ่งต้องค้นหารายการ คัดลอก และแจ้งให้ Siri ทราบว่าทำสำเร็จหรือไม่
คุณต้องส่งไปยังคลาสนี้จากตัวจัดการความตั้งใจที่ลงทะเบียนโดยเพิ่มรหัสนี้:
if #available(iOS 12, *) { if intent is CopyListIntent { return CopyListIntentHandler() } }
ตอนนี้คุณสามารถแตะคำแนะนำของ Siri ได้จริงและมันจะแสดงขึ้น:
และการแตะปุ่มสร้างจะเป็นการคัดลอกรายการ ปุ่มระบุว่า "สร้าง" เนื่องจากหมวดหมู่ที่เราเลือกในไฟล์คำจำกัดความความตั้งใจ
วุ้ยที่เป็นจำนวนมาก คำสั่งลัด Siri ใหม่เหล่านี้เป็นคุณสมบัติหลักใน iOS 12 ที่มีพื้นที่พื้นผิวใหม่สำหรับนักพัฒนาขนาดใหญ่ให้สำรวจ นอกจากนี้ เนื่องจากฉันบังเอิญมีตัวอย่าง Siri ที่ดี (และจัดทำเป็นเอกสาร) ให้ใช้งานได้ จึงมีเหตุผลที่จะลองเพิ่มคุณสมบัติใหม่ลงในสัปดาห์นี้
คุณสามารถดูการอัปเดต List-o-Mat ใน GitHub จนกว่าจะมีการเปิดตัว Xcode 10 และ iOS 12 มันอยู่ในสาขาของตัวเอง
อีกไม่กี่วันข้างหน้า ฉันจะดูโค้ดตัวอย่างของ Apple หรือสร้างโปรเจ็กต์ที่มีขนาดเล็กกว่านี้เป็นส่วนใหญ่
สิ้นสุดวันที่ 3: Xcode Playgrounds
วันก่อนหน้าทั้งหมดถูกใช้ไปใน Xcode 10 เบต้า ซึ่งไม่เกิดความผิดพลาดเพียงครั้งเดียวและดูเหมือนพร้อมสำหรับการพัฒนา ตอนนี้ฉันอยากจะสำรวจฟีเจอร์ใหม่ของ Playgrounds
สิ่งสำคัญที่ฉันต้องการจากสนามเด็กเล่นคือการทำให้พวกเขามีเสถียรภาพมากขึ้นและเร็วขึ้นมาก เพื่อให้เร็วขึ้น Apple ได้เพิ่มคุณสมบัติขนาดใหญ่ — โหมด REPL
ก่อน Xcode 10 เมื่อคุณอยู่ใน Playground ที่เปิดการทำงานอัตโนมัติไว้ (ซึ่งเป็นค่าเริ่มต้น) โค้ดทุกบรรทัดจะสร้างไฟล์ใหม่ทั้งหมดขึ้นมาใหม่และเรียกใช้ตั้งแต่ต้น หากคุณได้สร้างรัฐใด ๆ มันก็สูญหายไป แต่ปัญหาที่แท้จริงคือมันช้าเกินไปสำหรับการพัฒนาแบบวนซ้ำ เมื่อฉันใช้ Playgrounds ฉันตั้งค่าให้เรียกใช้ด้วยตนเอง แต่ถึงแม้จะช้าก็ตาม
ใน Xcode 10 การรันแบบแมนนวลนั้นเป็นบรรทัดฐานมากกว่า แต่หลังจากที่คุณรัน คุณสามารถเพิ่มบรรทัดเพิ่มเติมที่ด้านล่างของหน้าและดำเนินการต่อไปได้ ซึ่งหมายความว่าคุณสามารถสำรวจข้อมูลและวาดมุมมองซ้ำๆ โดยไม่ต้องสร้างใหม่และเริ่มต้นใหม่ตลอดเวลา
ในการเริ่มต้น ฉันสร้างสนามเด็กเล่น iOS (ไฟล์ → ใหม่ → สนามเด็กเล่น) ด้วยเทมเพลต Single View
เปิดการทำงานด้วยตนเองโดยดึงเมนูด้านล่างปุ่มเล่น (รูปสามเหลี่ยมที่มุมล่างซ้าย) สิ่งนี้ทำให้แถบแนวตั้งทางด้านซ้ายซึ่งแสดงตำแหน่งปัจจุบันของส่วนหัว Play (เหมือนเบรกพอยต์)
คุณสามารถแตะบรรทัดใดก็ได้แล้วแตะปุ่มเล่นทางด้านซ้าย การดำเนินการนี้จะเรียกใช้ Playground จนถึงจุดนี้ จากนั้นคุณสามารถไปต่อได้โดยแตะที่บรรทัดล่างสุดในสนามเด็กเล่น ที่สำคัญ คุณสามารถเพิ่มบรรทัดเพิ่มเติมที่ด้านล่างและพิมพ์ Shift + Enter หลังจากแต่ละบรรทัดเพื่อย้ายส่วนหัวของ Play ไปยังจุดนั้น
นี่คือ GIF ของฉันที่เปลี่ยนป้ายกำกับของมุมมองโดยไม่ต้องรีสตาร์ท Playground หลังจากพิมพ์แต่ละบรรทัด ฉันกำลังกด Shift + Enter
ตอนนี้ Playgrounds ยังรองรับการเรนเดอร์แบบกำหนดเองสำหรับประเภทของคุณ และ Apple กำลังผลักดันเฟรมเวิร์ก Swift ทุกอันให้รวม Playground เพื่อจัดทำเอกสาร
สิ้นสุดวันที่ 4: สร้าง ML
ปีที่แล้ว Apple ก้าวกระโดดครั้งใหญ่ในการเขียนโปรแกรมแมชชีนเลิร์นนิงสำหรับอุปกรณ์ของตน มีรูปแบบไฟล์รูปแบบ ML ใหม่และรองรับโดยตรงใน Xcode
ศักยภาพคือจะมีไลบรารีขนาดใหญ่ของไฟล์โมเดลเหล่านี้ ซึ่งจะมีเครื่องมือที่จะสร้างมันขึ้นมา และนักพัฒนาแอพอีกจำนวนมากจะสามารถรวม ML เข้ากับโปรเจ็กต์ของพวกเขาได้โดยไม่ต้องรู้วิธีสร้างโมเดล
นี้ไม่ได้เกิดขึ้นอย่างเต็มที่ Apple ไม่ได้เพิ่มพื้นที่เก็บข้อมูลของโมเดลหลังจาก WWDC และถึงแม้ว่าจะมีที่เก็บของบุคคลที่สาม แต่ส่วนใหญ่ก็มีโมเดลที่แตกต่างจากการสาธิตการจัดหมวดหมู่รูปภาพ ML ใช้สำหรับมากกว่าการจัดประเภทรูปภาพ แต่ไม่มีตัวอย่างที่มีให้เลือกมากมาย
ดังนั้นจึงเป็นที่ชัดเจนว่าแอพจริง ๆ จะต้องให้นักพัฒนาฝึกฝนโมเดลใหม่ ๆ Apple เปิดตัว Turi Create เพื่อจุดประสงค์นี้ แต่ยังห่างไกลจากความเรียบง่าย
ที่ WWDC 2018 Apple ทำบางสิ่งกับ Core ML:
- พวกเขา ขยายส่วนการประมวลผลภาษาธรรมชาติ (NLP) ของ Core ML ซึ่งทำให้เรามีตัวอย่างโดเมนหลักใหม่
- พวกเขาเพิ่มแนวคิดของ Transfer Learning ไปยัง Core ML ซึ่งช่วยให้คุณสามารถ เพิ่มข้อมูลการฝึกอบรมไปยังโมเดลที่มีอยู่ ได้ ซึ่งหมายความว่าคุณสามารถนำโมเดลจากไลบรารีและปรับแต่งโมเดลให้เป็นข้อมูลของคุณเองได้ (เช่น ให้โมเดลจดจำวัตถุใหม่ในรูปภาพที่คุณให้มา)
- พวกเขาเปิดตัว Create ML ซึ่งใช้งานภายใน Xcode Playgrounds และให้คุณลากและวางข้อมูลสำหรับการฝึกอบรมและสร้างส่วนขยายโมเดล (โดยใช้ Transfer Learning)
นี่เป็นอีกก้าวที่ดีในการทำให้ ML เป็นประชาธิปไตย มีโค้ดไม่มากนักที่จะเขียนที่นี่ หากต้องการขยายตัวแยกประเภทรูปภาพ คุณเพียงแค่รวบรวมและติดป้ายกำกับรูปภาพ เมื่อคุณมีแล้ว คุณเพียงแค่ลากมันไปที่ Create ML คุณสามารถดูการสาธิตได้ในวิดีโอ Create ML WWDC นี้
ปลายสัปดาห์: เล่นกับการสาธิต AR ใหม่
ARKit เป็นอีกหนึ่งผลิตภัณฑ์ที่เพิ่มขึ้นอย่างมากในปีที่แล้ว และดูเหมือนชัดเจนยิ่งขึ้นว่าอุปกรณ์ AR กำลังจะมา
รหัส ARKit ของฉันจากบทความของปีที่แล้วยังคงเป็นวิธีที่ดีในการเริ่มต้น ฟีเจอร์ใหม่ส่วนใหญ่เกี่ยวกับการทำให้ AR แม่นยำและเร็วขึ้น
หลังจากนั้น หากคุณได้ติดตั้งรุ่นเบต้า คุณจะต้องดาวน์โหลดแอปสาธิต SwiftShot ARKit ใหม่อย่างแน่นอน แอพนี้ใช้ประโยชน์จากคุณสมบัติใหม่ของ ARKit โดยเฉพาะประสบการณ์ผู้เล่นหลายคน อุปกรณ์ตั้งแต่ 2 เครื่องขึ้นไปบนเครือข่ายเดียวกันและในที่เดียวกัน สามารถสื่อสารระหว่างกันและดูประสบการณ์ AR เดียวกันได้
แน่นอน ในการเล่นนี้ คุณต้องมีอุปกรณ์สองเครื่องขึ้นไปที่คุณยินดีใส่ใน iOS 12 เบต้า ฉันรอให้เบต้าสาธารณะทำเช่นนี้เพราะฉันมีอุปกรณ์ที่ปลอดภัยสำหรับเบต้าเพียงเครื่องเดียว
แอป AR ที่เล่นได้ง่ายขึ้นคือแอป Measure ใหม่ ซึ่งช่วยให้คุณวัดความยาวของวัตถุจริงที่คุณเห็นในมุมมองกล้อง AR มีแอพของบุคคลที่สามที่ทำเช่นนี้ แต่ Apple ได้รับการขัดเกลาและติดตั้งล่วงหน้าด้วย iOS 12
ลิงก์ไปยังวิดีโอ WWDC และโค้ดตัวอย่าง
ดังนั้น ฉันตั้งตารอที่จะทำสิ่งต่างๆ มากขึ้นด้วย Xcode 10 และ iOS 12 ในช่วงซัมเมอร์นี้ ขณะที่เรารอโทรศัพท์รุ่นใหม่และอุปกรณ์ใดๆ ก็ตามที่ Apple อาจเปิดตัวในช่วงปลายฤดูร้อนนี้ ในระหว่างนี้ นักพัฒนา iOS สามารถเพลิดเพลินกับแสงแดด ติดตามการเดินป่าของเราด้วย Watch OS รุ่นเบต้าใหม่และดูวิดีโอ WWDC เหล่านี้เมื่อเรามีโอกาส
คุณสามารถสตรีมวิดีโอ WWDC 2018 ได้จากพอร์ทัลนักพัฒนาของ Apple นอกจากนี้ยังมี Mac App ที่ไม่เป็นทางการนี้สำหรับการดูวิดีโอ WWDC
นี่คือวิดีโอที่อ้างอิงในบทความนี้:
- คำปราศรัย WWDC 2018
- WWDC 2018 Platforms State of the Union
- รู้เบื้องต้นเกี่ยวกับคำสั่งลัด Siri
- ใช้ประโยชน์สูงสุดจาก Playgrounds ใน Xcode
- ขอแนะนำ Create ML และหากคุณต้องการอะไรที่ล้ำหน้ากว่านี้ A Guide to Turi Create
ในการเริ่มเล่นกับ Xcode 10 และ iOS 12:
- ดาวน์โหลดเบต้า (ไปที่อุปกรณ์เพื่อรับโปรไฟล์เบต้า)
- List-o-Mat พร้อมการอัปเดตทางลัดของ Siri
- Swift Shot (เกม ARKit 2 แบบผู้เล่นหลายคน)