iOS APP Swift通過Siri來實(shí)現(xiàn)APP的控制,并且可添加快捷方式

?剛剛實(shí)踐的,按步驟來,全網(wǎng)最全的,不要在意排版

1、確認(rèn)你的手機(jī)啟動(dòng)了?Siri 功能,如果沒有需要先打開Siri

2、在你的主工程中啟動(dòng)Siri功能,具體步驟:

2.1在 Xcode 中打開你的應(yīng)用工程。

2.2在項(xiàng)目設(shè)置中,選擇適當(dāng)?shù)?target。 對(duì)于 iOS,選擇你的 iOS app target。 對(duì)于 watchOS,選擇你的 WatchKit Extension target。

2.3選擇 Capaabilities 標(biāo)簽。

2.4啟用 Siri 功能。

3、添加 Intents 應(yīng)用擴(kuò)展 target 提供了構(gòu)建 Intents 擴(kuò)展所需的初始文件,并配置 Xcode 項(xiàng)目以構(gòu)建該擴(kuò)展并將其包含在應(yīng)用程序包中。

在 Xcode 中打開你的已有的應(yīng)用工程。

選擇 File > New > Target。

從 iOS 或 watchOS 平臺(tái)的 “Application Extension” 組中選擇 “Intents Extension”。

點(diǎn)擊下一步。

指定擴(kuò)展名并配置語言和其他選項(xiàng)。

對(duì)于 iOS 應(yīng)用程序,如果你計(jì)劃自定義 Siri 界面的某些部分,請(qǐng)啟用“ Include UI Extension” 選項(xiàng)。

點(diǎn)擊完成。

4、創(chuàng)建Intents文件,并且在里面添加對(duì)應(yīng)的Intent,比如:簽到

選擇你的 Intents 擴(kuò)展的 build scheme。 當(dāng)你創(chuàng)建 Intents 擴(kuò)展目標(biāo)時(shí),Xcode 會(huì)自動(dòng)創(chuàng)建 build scheme。

選擇要運(yùn)行代碼的目標(biāo)(模擬器或設(shè)備)。

選擇 Porduct > Run 以開始調(diào)試會(huì)話。

當(dāng) Xcode 提示時(shí),選擇 Siri 作為要運(yùn)行的主應(yīng)用程序。 Xcode 構(gòu)建你的應(yīng)用程序和擴(kuò)展,將它們安裝在設(shè)備上,然后啟動(dòng)你選擇的應(yīng)用程序。

5、記得把你的Intents文件 關(guān)聯(lián)上所有創(chuàng)建的target

6、另外需要在Info.plist 文件中添加 對(duì)應(yīng)的描述和key,具體在最下面。

7、把target項(xiàng)目run一遍,再run主項(xiàng)目,在手機(jī)上搜索快捷指令:簽到,就可以看到了,添加后就會(huì)打開自己的APP,后續(xù)的邏輯可以自己實(shí)現(xiàn)了

8、如果涉及到多語言問題,也可以在Intents文件添加多語言

重點(diǎn)代碼:

extension AppDelegate {

//這個(gè)方法是關(guān)鍵,調(diào)起的時(shí)候會(huì)執(zhí)行,里面就是你自己實(shí)現(xiàn)自己的業(yè)務(wù)邏輯了

? ? func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([any UIUserActivityRestoring]?) -> Void) -> Bool {

? ? ? ? if userActivity.activityType == "StepIntent" {

? ? ? ? ? ? if let intent = userActivity.interaction?.intent as? DeviceStepIntent {

? ? ? ? ? ? ? ? handleStepIntent(intent)

? ? ? ? ? ? ? ? return true

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return false

? ? }


? ? //? StepIntent

? ? private func handleStepIntent(_ intent: DeviceStepIntent) {

? ? }

}

------------------------檢查下是否有授權(quán) 代碼發(fā)到APP啟動(dòng)時(shí)候

INPreferences.requestSiriAuthorization { status in

? ? ? ? ? ? printLog("requestSiriAuthorization \(status)")

? ? ? ? ? ? switch status {

? ? ? ? ? ? case .authorized:

? ? ? ? ? ? ? ? print("Authorized")

? ? ? ? ? ? default:

? ? ? ? ? ? ? ? print("Not Authorized")

? ? ? ? ? ? ? ? self.promptForSiriAuthorization()

? ? ? ? ? ? }

? ? ? ? }


-----------------------info.plist 文件新增內(nèi)容

<key>NSExtensionAttributes</key>

<dict>

<key>IntentsSupported</key>

<array>

<string>StepIntent</string>

</array>

</dict>

<key>NSExtensionPointIdentifier</key>

<string>com.apple.intents-service</string>

<key>NSExtensionPrincipalClass</key>

<string>$(PRODUCT_MODULE_NAME).IntentHandler</string>

<key>NSUserActivityTypes</key>

<array>

<string>StepIntent</string>

</array>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容