J'ai implémenté deux intentions personnalisées avec Sirikit dans mon application iOS. Lorsque je les développais, iOS 13.3 était installé sur mon iPhone et l'une de mes intentions a une invite Siri Dialog demandant la valeur d'un paramètre. Toute l'application est traduite en anglais et en espagnol et l'intention personnalisée a bien fonctionné dans les deux langues.
Lorsque j'ai mis à jour mon iPhone vers iOS 13.4.1, mon intention personnalisée a commencé à avoir les problèmes suivants (j'ai vu les deux problèmes en fonction de l'installation / du test / de l'appareil):
param
?" (plus ou moins) Je trouve ce problème très étrange et ennuyeux. J'ai essayé de recréer les fichiers de traduction pour Intent.intentdefinition
: Intent.strings (Base)
, Intent.strings (English)
, Intent.strings (Spanish)
et j'ai même essayé de recréer toute la définition d'intention personnalisée et j'ai toujours le problème.
J'ai également essayé de changer la langue iOS et la langue Siri sur mon téléphone, redémarrer, réinstaller l'application, les intentions, etc.
Voici le fichier Info.plist de mon extension Sirikit:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> <string>InventorySearchIntent</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundlePackageType</key> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <key>CFBundleShortVersionString</key> <string>$(MARKETING_VERSION)</string> <key>CFBundleVersion</key> <string>$(CURRENT_PROJECT_VERSION)</string> <key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> <key>IntentsRestrictedWhileLocked</key> <array/> <key>IntentsRestrictedWhileProtectedDataUnavailable</key> <array/> <key>IntentsSupported</key> <array> <string>NumTotalItemsIntent</string> <string>SearchItemIntent</string> </array> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string> </dict> </dict> </plist>
Une solution pour ça? Est-ce un bogue d'iOS 13.4? L'intégration de Siri est très importante pour l'application que je développe et c'est un bloqueur pour moi.
Merci d'avance!
3 Réponses :
J'espère que cela fonctionne pour toi
Il est déjà traduit dans toutes les langues prises en charge et le projet Xcode n'a que quelques mois avec la dernière version de Xcode (désormais 11.4.1). Toute la localisation fonctionnait correctement jusqu'à iOS 13.4.1. Et cela fonctionne avec exactement le même projet et le même code avec iOS 13.3
Avez-vous déjà vérifié le n ° 3 parce que j'ai eu le même problème, mais la langue Siri sélectionnée dans les paramètres ne correspondait pas à CFBundleDevelopmentRegion
Je ne comprends pas # 3. Cela signifie-t-il que je ne peux avoir qu'une seule langue? Ma langue de développement est l'anglais. J'ai des traductions de base, anglais et espagnol. La langue de Siri sur mon téléphone est l'espagnol.
Les traductions en anglais fonctionnent bien, le problème vient de la langue espagnole.
D'après ma propre expérience, ce problème est résolu dans iOS 13.5 beta 4. Je viens de le tester sur un iPhone 6s Plus avec Xcode 11.5 beta 2 (11N605f).
Cependant, il y a encore d'autres problèmes. Par exemple, dans Raccourcis, toutes les chaînes d'opération de mon projet de test sont affichées en anglais, pas dans la langue localisée.
De plus, INStringResolutionResult.confirmationRequired (avec :) ne fonctionne pas comme prévu.
J'ai une fonction qui récupère les mots que l'utilisateur dit et les recherche dans la base de données, puis utilise INStringResolutionResult.confirmationRequired (avec :) pour vérifier avec l'utilisateur. SiriKit n'utilise actuellement que les mots prononcés par l'utilisateur, et non le résultat que je vérifie avec l'utilisateur, ce qui entraîne le blocage du code final.
Je viens de recevoir la réponse de l'équipe de rapport de bogue d'Apple. Voici les conclusions que je tire pour l'instant.
J'ai contacté le support technique Apple Developer et j'ai recréé le bogue dans un projet séparé et ils m'ont dit de déposer un rapport de bogue à l'aide de Feedback Assistant. Je ne peux pas tester iOS 13.5 beta 4 car j'utilise mon téléphone principal pour tester mon application et je ne veux pas tout réinstaller et utiliser la beta iOS pour mon utilisation quotidienne. Cela semble clairement être un bogue et je pense que je devrai attendre la disponibilité d'iOS 13.5, ce qui est vraiment dommage car cela bloque la sortie de mon application.
Confirmé. iOS 13.5 résout le problème avec la boîte de dialogue Siri demandant le paramètre bien que certaines chaînes ne soient pas complètement traduites lors de la tentative d'ajout du raccourci Siri.
D'après mon propre test, SiriKit dans iOS 13.5 ne fonctionne pas du tout sur un appareil réel. Siri dans un appareil réel n'utilise que les mots par défaut, pas ce que le programmeur fournit, même en anglais. Siri dans le simulateur 13.5 ne fonctionne pas du tout. Siri dans le simulateur 13.3 fonctionne très bien. Mon iPhone est un iPhone 6s Plus avec le dernier iOS 13.5.
Dans mon cas, cela fonctionne bien avec un iPhone 11 Pro (iOS 13.5). Je ne sais pas si votre problème ou votre cas d'utilisation est le même que le mien. Je pense que nous devons être patients car ils devront le corriger dans les versions ultérieures. BTW, vérifiez la catégorie d'intention que vous exécutez dans votre fichier .intentdefinition. J'ai également eu des problèmes avec cela et category = "Exécuter" fonctionne pour moi mais "Rechercher" ou "Rechercher" échoue
Merci. Le mien est dans "Find". Voici mon exemple de projet, vous pouvez faire un test si vous le souhaitez. dropbox.com/sh/a55svrip3myb8rd/AADE2nFpvTNR9lkzLC4hT5uNa?dl= 0
Alors vous devriez vraiment essayer de changer cette catégorie et voir ce qui se passe.
Mise à jour iOS 14
Je vois toujours le comportement suivant (tel que rapporté par Owen Zhao) avec iOS 14:
J'ai observé que le redémarrage de l'appareil iOS après le changement de langue résout (toujours) le problème.
J'ai le même problème. Avez-vous résolu cela?