我正在尝试使用与iOS Contacts应用程序集成的消息传递应用程序,以便用户可以直接从"联系人"通过应用程序发起消息.这在WWDC 2016会议240中有所涉及,但显然省略了一些细节.
在WWDC示例之后,我有:
将活动类型添加到应用程序Info.plist:
<key>NSUserActivityTypes</key>
<array>
<string>INSendMessageIntent</string>
</array>
Run Code Online (Sandbox Code Playgroud)实现application(_:continue:restorationHandler:)我的应用程序委托.
创建并捐赠了一种互动
let activity = NSUserActivity(activityType: "com.example.message")
activity.title = "Send CB Test Message"
activity.expirationDate = Date.distantFuture
let recipient = INPerson( /* recipient with an email address in my Contacts database */ )
let sender = INPerson( /* me */ )
let intent = INSendMessageIntent(recipients: [recipient], content: nil, groupName: nil, serviceName: "CB Test Chat", sender: sender)
let response = INSendMessageIntentResponse(code: .success, userActivity: activity)
let interaction = …Run Code Online (Sandbox Code Playgroud)据推测,iPhone新推出的Siri功能背后的引擎已经开发了好几年(从CALO项目中衍生出来).据说他们甚至专门为它开发了一种新的编程语言.
我无法在任何地方找到相关信息.唯一可能的线索是学术论文,但我不在大学网络中,因此我无法访问其中的大多数.
有没有人有任何线索,例子,甚至模糊的东西,"它类似于Prolog"或者"它是Lisp的方言"?
Apple是否有可能或将为Siri提供API?如果我能喝着咖啡说,那会很棒
网友:嘿Siri,请你打开愤怒的小鸟; 4级并为我抛出第一只鸟.确保你至少打了一头绿猪,或者它已经从你的薪水中拿出来了.
Siri:是的,我会帮你的.
这可能吗?你认为Apple会向我们提供这个吗?
我已将二进制文件上传到 iTunes Connect,但收到了这封电子邮件:
我们发现您的应用程序“xxx”最近交付的一个或多个问题。您的交付成功,但您可能希望在下次交付时更正以下问题:
无效的 Siri 支持 - 自定义意图的本地化描述:“xxxxxx”未找到语言环境:zh_CN
无效的 Siri 支持 - 自定义意图的本地化标题:“xxxxxx”未找到区域设置:zh_CN
我在 Intents.strings 中为“zh_CN”语言添加了本地化的标题和描述,但没有任何效果。 图片
有人能告诉我如何解决吗?
我创建了一个自定义Siri意图.它在"快捷方式"应用程序中可见.但是,它允许我仅从捐赠的快捷方式中选择,而无需指定自己的参数.
是否可以使用"快捷方式"应用程序创建支持提供参数的Siri Intent?
我的意图配置
结果如何:
我想要实现的目标
请注意,如何预先填写字段(例如Item字段).我想有相同的选择phoneNumber.
在我的申请中,我只支持欧元和美元货币.因此,当用户尝试使用Siri向GBP发送付款时,我要求他在EUR和USD之间进行选择.
之后在屏幕上我看到:
如果我选择100美元intent.currencyAmount!.currencyCode我总是有英镑(但用户选择美元).这很奇怪.
这是我的代码:
func resolveCurrencyAmount(forSendPayment intent: INSendPaymentIntent, with completion: @escaping (INCurrencyAmountResolutionResult) -> Void) {
if let currencyAmount = intent.currencyAmount { // need to check if we have proper value
if let amount = currencyAmount.amount {
if amount.doubleValue == 0 { // wrong amount
completion(INCurrencyAmountResolutionResult.unsupported())
return
}
if let currencyCode = currencyAmount.currencyCode {
if let _ = EnumCurrency(rawValue: currencyCode) { // we found currency code that we know
completion(INCurrencyAmountResolutionResult.success(with: INCurrencyAmount(amount: NSDecimalNumber(value: abs(amount.doubleValue)), currencyCode: currencyCode)))
return
} …Run Code Online (Sandbox Code Playgroud) 我的Xcode是v10,我正在开发针对iOS 12的SiriKit的自定义意图.
在Xcode 10中,自定义意图是在.intentdefinition文件中设计的,您可以在其中为意图短语定义自己的参数,以及意图的标题和该意图的Siri快捷方式.使用.intentdefinition文件构建项目会使Xcode自动为该意图生成INIntent派生类.
我的问题是,为了支持除英语之外的其他语言,以便当用户能够操作自定义意图的快捷方式时,意图的标题以系统的语言显示在General> Siri&Search中,我需要为我提供本地化的意图标题.intentdefinition文件.
当我尝试在文件检查器中为我的.intentdefinition文件添加另一种语言然后构建项目时,我得到:
duplicate output file '/Users/.../IntentDefinitionGenerated/Intents/MyCustomIntent.swift' on task: IntentDefinitionCodegen /Users/.../ru.lproj/Intents.intentdefinition
这很可能发生,因为Xcode在.lproj文件夹中看到多个.intentdefinition文件,并尝试为每个文件生成相同的命名类.
如何本地化iOS 12的.intentdefinition文件?
我正在尝试为iOS 11实现SiriKit,特别是使用列表和注释.我的AppIntentVocabulary.plist如下所示.
AppName取代了我App的真实姓名.
https://gist.github.com/mitch2be/6e49d5e07e567bbc4d049bc565dad473
每次我提交时,我都会收到来自iTunesConnect的电子邮件,说明:
Siri支持无效 - 示例短语"在AppName中创建新的购物清单".未被归类为INCreateTaskListIntent意图
Siri支持无效 - 示例短语"将mik添加到AppName中的杂货清单".未被归类为INAddTasksIntent意图
对于其他剩余的示例短语,还有更多无效的Siri支持消息.
有没有人知道为什么会这样?是否需要在其他地方实施示例短语?
AppIntentVocabulary.plist具有主应用程序的目标成员身份.我还将它添加到SiriKit扩展并尝试了但是这也没有用.
任何想法或解决方案将是最受欢迎的.
SFSpeechRecognizer我的用例非常不准确.我已经尝试设置contextual字符串,因为我有一个与之匹配的单词数组.但它仍然无法做到这一点.我还需要其他配置吗?
我正在使用Apple提供的示例项目,只有这个改变:
recognitionRequest.contextualStrings = @[@"iron man", @"metal", @"stark", @"superhero", @"boyfriend", @"pepper", @"arrogant", @"stylish"];
Run Code Online (Sandbox Code Playgroud) 我用如下参数创建了一个自定义Intent:
我捐了它:
let intent = PlayIntent()
intent.color = color
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate()
Run Code Online (Sandbox Code Playgroud)
它显示正确:
但是,我想要一个接受用户输入的Intent.示例,Messages.app:
如何配置我的自定义Intent来处理输入?
sirikit ×10
ios ×8
siri ×5
swift ×3
ios12 ×2
objective-c ×2
ios-contacts ×1
ios10 ×1
ios11 ×1
iphone ×1
localization ×1
shortcut ×1
xcode ×1