At startup of my app I call
[[INVoiceShortcutCenter sharedCenter] getAllVoiceShortcutsWithCompletion:
^void(NSArray<INVoiceShortcut *> *voiceShortcuts, NSError *error)
{
to get the invokation phrases of the supported Siri voice shortcuts. Immediately after the call (before the completion handler is called) I get a bunch of log messages:
2023-01-09 20:32:15.415950+0100 MyAppName[11673:607994] [default]
LaunchServices: store (null) or url (null) was nil:
Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database"
UserInfo={NSDebugDescription=process may not map database,
_LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]}
2023-01-09 20:32:15.417786+0100 MyAppName[11673:607994] [default]
Attempt to map database failed: permission was denied. This attempt will not be retried.
2023-01-09 20:32:15.418049+0100 MyAppName[11673:607994] [db]
Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54
"process may not map database" UserInfo={NSDebugDescription=process may not map database,
_LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]}
2023-01-09 20:32:15.419079+0100 MyAppName[11673:607994] [default]
LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54
"process may not map database" UserInfo={NSDebugDescription=process may not map database,
_LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]}
2023-01-09 20:32:15.419193+0100 MyAppName[11673:607994] [default]
Attempt to map database failed: permission was denied. This attempt will not be retried.
2023-01-09 20:32:15.419304+0100 MyAppName[11673:607994] [db]
Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54
"process may not map database" UserInfo={NSDebugDescription=process may not map database,
_LSLine=264, _LSFunction=-[_LSDReadClient getServerStoreWithCompletionHandler:]}
Then, the completion handler is called and I receive the INVoiceShortcut instances as expected with the invokation phrase as maintained by the user.
When the user wants to change the invokation phrase, I call
INUIAddVoiceShortcutViewController *addShortcutCntrl =
[[INUIAddVoiceShortcutViewController alloc] initWithShortcut:siriShortcut];
addShortcutCntrl.modalPresentationStyle = UIModalPresentationCurrentContext;
addShortcutCntrl.delegate = self;
[self presentViewController:addShortcutCntrl animated:YES completion:nil];
The Apple-provided UI comes up and I tap 'Change Voice Phrase'. I say the new phrase, it is recogized by speech recognition and immediately afterwards, it again prompts me with another peep signal to record the phrase again. I basically always have to record the phrase twice.
This problem only happens on iPad. With the exact same code on iPhone everything works correctly (I also do not get the log messages above).
Any ideas on how to analyse this or what might help to solve it?