PTT in the background, cannot activate Siri without unlocking

Hello,

We're interested in using the PTT Framework with our PTT capable hardware, as the framework has intended. The problem is activating Siri with any of our specified Intent's doesn't work when the phone is locked.

The iPhone always says "You'll have to unlock your iPhone first".

Reading up on the problem, it seems pretty common in the fact that Apple doesn't allow Siri Intents to be executed while the phone is locked.

It's a sensible precaution by default, but there are countless threads of real use cases that users want to use Siri without unlocking (with PTT, or well, without).

There appears to be no options for PTT to enable this, any flags on the Siri Intent to allow benign App actions or queries, user UI configuration through Settings -> Siri & Search to manually allow it even when the phone is locked. Neither are there any entitlements (that I'm aware of) that would allow trivial and non-secure Siri App Intents.

The only advice we have for our users (and albeit against the intention of the limitation in the first place) is to: Disable Auto Lock, Disable Face ID and to Disable Passcode.

It is in fact 2024, and users do expect a better experience than this with Siri, or am I missing something?

Can you provide more detail on how you are trying to use Siri within your PushToTalk app while the phone is locked? If you are attempting to initiate a PushToTalk transmission while the phone is locked there are three options:

  • The user can begin a transmission from the System UI on the Lock Screen
  • Your app can programmatically begin a transmission following a CoreBluetooth event if your app integrates with Bluetooth accessories
  • You can adopt the PushToTalkTransmissionIntent protocol within your app to allow the user to assign transmission actions to the Action Button, Widgets, etc.

The PushToTalkTransmissionIntent protocol was introduced in iOS 17.4 and allows your app to programmatically begin a transmission when the intent is run by the user. This allows the user to assign the intent action to the Action Button on supported devices.

When using the PushToTalkTransmissionIntent you should wait to return an IntentResult from the perform method until after the your PTChannelManagerDelegate receives the channelManager(_:channelUUID:didBeginTransmittingFrom:) callback. One approach to implement this is to use the Swift Concurrency API to create a CheckedContinuation when your code requests to begin a transmission and to resume the continuation after your app receives the channelManager(_:channelUUID:didBeginTransmittingFrom:) callback in your PTChannelManagerDelegate. Make sure your code also handles situations where the transmission request fails.

PTT in the background, cannot activate Siri without unlocking
 
 
Q