十分鐘接入 iOS 12 新特性:Siri Shortcuts
前言
ofollow,noindex">Xcode 10 已經正式釋出,開發者可以接入Siri Shortcuts的iOS 12新特性。
WWDC2018的 Introduction to Siri Shortcuts Session 介紹了Siri Shortcuts的使用和Swift接入,但沒有Objective-C版本的demo。
於是新開此文,介紹如何快速用OC接入iOS 12新特性Siri Shortcuts。
正文
快速接入Siri Shortcuts
Siri Shortcuts的API有兩大類:NSUserActivity和Intents。

使用NSUserActivity接入Siri Shortcuts簡單高效,只需十分鐘。

1、plist新增activity type(Define Shortcut)
注意是array的型別,每個元素是一個字串,這裡定義的是 loying.LearnSiriShortcut.type
;
<key>NSUserActivityTypes</key> <array> <string>loying.LearnSiriShortcut.type</string> </array>
2、配置NSUserActivity並通知Siri(Donate Shortcut)
-initWithActivityType
介面的type引數要和plist一致;
eligibleForPrediction是iOS 12新增API,如需支援老版本要新增 @available(iOS 12.0, *)
的判斷;
userActivity的userInfo屬性是透傳的引數值;
最後把userActivity賦值給viewController的userActivity屬性;
- (void)reportSiriShortcuts { NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@"loying.LearnSiriShortcut.type"]; userActivity.eligibleForSearch = YES; if (@available(iOS 12.0, *)) // 如果要支援老版本,加上判斷 { userActivity.eligibleForPrediction = YES; } userActivity.title = @"測試標題"; userActivity.userInfo = @{@"testKey" : @"testValue"}; self.userActivity = userActivity; }
3、在AppDelegate中處理Siri開啟APP請求 (Handle Shortcut)
通過userActivity的type值判斷是否為Siri Shortcuts呼起,做相應的邏輯處理。
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { NSLog(@"continueUserActivity"); if ([userActivity.activityType isEqualToString:@"loying.LearnSiriShortcut.type"]) { // 做自己的業務邏輯 } return YES; }
至此接入Siri Shortcuts完畢,僅需三步!
下面根據WWDC的視訊詳細介紹Siri Shortcuts的新特性。
Siri Shortcuts的特性解析
Siri Shortcuts提供的能力有兩個:
-
1、Suggestion(建議)
使用者重複、固定的行為,通過不斷的告知siri,siri會在確定使用者習慣後,會發本地推送提醒使用者;
比如說某個使用者習慣每天晚上11點的時候用微信讀書進行閱讀,如果微信讀書把使用者每次的行為傳送給Siri,那麼Siri在學習到使用者的習慣之後,會在適當時候通過本地推送提示使用者,推送的截圖如下:

-
2、Shortcuts(短語快捷方式)
把APP的常用操作行為與短語掛鉤,通過設定好的短語可以快捷使用APP的功能;
WWDC以點外賣為例,通過設定好的短語
coffee time
,可以呼起APP,也可以直接在Siri介面進行下單操作;coffee time
以上的功能都需要特定的使用場景:
1、App的關鍵功能;
2、使用者有重複性的行為;
3、隨時都可以執行;
不滿足以上三個要求的功能,蘋果不推薦使用Siri Shortcuts。
Siri Shortcuts的使用
iOS 12的開發者選項增加了 Display Recent Shortcuts
,開啟之後可以顯示最近傳送給Siri的Shortcuts;

如下,向Siri傳送了名為“測試標題”的Shortcuts;

在新增Siri Shortcuts之後,本地搜尋時能找到對應的Shortcuts,點選之後會執行定義好的Shortcuts操作;

在APP新增Shortcuts之後,可以在系統設定中錄製Siri Shortcuts的快捷短語:

錄製短語之後,可以通過Siri快速呼起APP對應的功能:

注意事項
1、Siri語言版本可以設定成中文/英文,需要與短語的語言型別一致;
2、檢查專案中是否已存在介面 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
;(實際開發過程,因為UniversalLink接入,在Category已經實現這個delegate,導致在AppDelegate.m實現的介面沒有回撥)
附錄
招聘啟事
北京招聘Vulkan圖形開發工程師
受人所託,現幫忙發一則Vulkan圖形開發工程師招聘訊息。
要求:熟練掌握OpenGL ES、Vulkan等圖形庫的使用,最好有豐富的圖形工程實踐經驗。
工作地點:北京
有意向熊皮皮聯絡,微信migao117842