Why won's Siri recognize my intents extension?

I am trying to add Siri Kit to my app - I have followed every step carefully, but Siri will not call my intents extension.


I have built 3 test apps, plus the UnicornChart app, and all of them work fine. Which is to say, I can place NSLog statments in my resolve methods (INSearchForPhotosIntentHandling) - and the NSlogs appear in the console when I debug the intents extension (ie run the intents extension target and execute Siri).


But with my real app, an app which I have been developing for several years and is up to version 5.4 , no matter what I do, Siri does not recognize my app, all I get is photos from the Web or photos in my phone's photo library.


My intent extension implements INSearchForPhotosIntentHandling and I have methods in my intents handler class for:


- (void) resolveAlbumNameForSearchForPhotos:(INSearchForPhotosIntent *)intent withCompletion:(void (^)(INStringResolutionResult * _Nonnull))completion

- (void)confirmSearchForPhotos:(INSearchForPhotosIntent *)intent completion:(void (^)(INSearchForPhotosIntentResponse *response))completion

- (void)handleSearchForPhotos:(INSearchForPhotosIntent *)intent completion:(void (^)(INSearchForPhotosIntentResponse *response))completion


I have properly added the Siri capability to the project, and enabled SiriKit in the iOS dev portal for my appID.


But - 3 test apps I built from scratch, all worked fine. All 3 of them, plus my real app have the exact same NSExtensionAttributes - The IntentHandler class was identical in all 3 test apps, plus the real app.


I named the 3 test apps:


- SiriTest

- PannaSiriTest

- TurkeySiri


All of these work when I speak "Find photos in fish album in TurkeySiri" - the last word being the app name.


But when I do this with my real app name, no response - I just get photos from the web.


My real app is named "Panna" - so I say "Find photos in fish album in Panna" - nothing.


I don't know what code to post - if I post the code for my test apps, the code will work if anyone tries it.


I can't post the code for my app, its tens of thousands of lines of irrelevant code of course, but the parts related to SiriKit are identical to the code in the test app. SO, I've posted the test app (http://app.pannacooking.com/download/TurkeySiri.zip).


I've compared the test app to my real app 30 times. I've compared each class, the info.plist, my apps info plist. All match.


The only thing I can think of is that it has something to do with the actual name of my app. I dont know why this would be a problem. But I can't help think this is the case,


I would love to test this theory, but I can't find a way - what do I change to affect the word Siri uses to recognize my app? Is it the bundle name, the App ID name in IOS Portal? Is it something in the info.plist?


But I am soliciting suggestions, ideas, wild guesses - ANYTHING. Any advice would be appreciated.


Thanks,

Jordan.

Replies

Did you request permission (using INPreferences) in the main app yet? Nothing will happen until permission is accepted (I forgot this at first, too)

Jordan B - I'm having this same problem. Did you ever find a solution?

bump. *Exact* Same problem

I see posts from years ago, I'm running on iOS 14.3 and have a problem like this when using INPlayMediaIntent.
My project's main language is English: when Siri is in English it works okay, when I change to other languages (tried Portuguese, Japanese and Spanish) it doesn't recognize my app.

What I noticed:
  • First thing I do on the app is ask for permission INPreferences.requestSiriAuthorization and if granted I register some test parameters with INVocabulary, Siri understands perfectly what I'm saying but can't find my app.

  • My bundle/app name is always the same for all languages but I extra localized it on InfoPlist.strings to make sure.

  • Tried using CFBundleSpokenName, INAlternativeAppName and INAlternativeAppNamePronunciationHint.

  • Tried creating AppIntentVocabulary.plist with examples like "Play cool music on my-app-name" and "Play cool music on the app my-app-name".

  • Tried localizing AppIntentVocabulary.plist from Xcode menu, later reverted the change and created AppIntentVocabularyPlist.strings and have both at the same time (not sure what's the way to do it) but nothing.

  • Tried changing the app name to something else, some works others don't. Can't find a pattern...

  • Between tries I restarted my device because I noticed that Siri might still be indexing my app from a fresh install (with a name that was working, a Siri could not find it from a fresh install, by battery died and when it turned back on it worked).

But in the end of the day my current app name does *not* work with other languages, I don't expect the fix to be a rebranding right?