I started having difficulties with WebRTC connections in my iOS app after upgrading to iOS 17. The behavior isn't totally consistent, but it looks like there are network issues when connecting via a STUN server, but not via TURN. Via STUN, the connection is established and then usually drops after a few seconds. Is anyone else experiencing these issues?
This is the WebRTC package I'm using: https://github.com/stasel/WebRTC
Post
Replies
Boosts
Views
Activity
I've been having connection issues with WebRTC in my app since updating my devices to iOS 17. The issues are inconsistent, but generally the video connection cuts out after a couple seconds, seemingly because of network issues.
I saw that there was a mention of WebRTC in the security content of iOS 17, and I've seen some reports on Reddit about users of smart home devices with cameras having connection issues after updating to iOS 17. Is anyone else experiencing similar issues?
I'm trying to implement this in TypeScript, and I'm stuck on the step "Decode the sequence and extract the single octet string that it contains. Verify that the string equals nonce."
This is my implementation so far. I'd be grateful for any help anyone can provide.
(Replied to the wrong thread, so deleting this message)
Thanks, but I'm completely out of my depth at this point. I don't know how to do this step in TypeScript or any other language, and everything I've tried with GPT-4 hasn't worked.
To follow up on this: Whatever issues I was encountering seem to be resolved now.
Thanks for those insights. Maybe it's not worth using the fraud metric after all. Does the ability for a device to produce a valid attestation (apart from the fraud metric) give you any insight into whether the app is running on a jailbroken device or is otherwise compromised? I am at least able to validate attestations.
I did try using fromBER, but I wasn't sure what to do with the output:
Sequence {
blockLength: 3774,
error: '',
warnings: [],
valueBeforeDecodeView: Uint8Array(3774) [
<values omitted>
],
name: '',
optional: false,
idBlock: LocalIdentificationBlock {
blockLength: 1,
error: '',
warnings: [],
valueBeforeDecodeView: Uint8Array(0) [],
isHexOnly: false,
valueHexView: Uint8Array(0) [],
tagClass: 1,
tagNumber: 16,
isConstructed: true
},
lenBlock: LocalLengthBlock {
blockLength: 1,
error: '',
warnings: [],
valueBeforeDecodeView: Uint8Array(0) [],
isIndefiniteForm: true,
longFormUsed: false,
length: 0
},
valueBlock: LocalConstructedValueBlock {
blockLength: 3772,
error: '',
warnings: [],
valueBeforeDecodeView: Uint8Array(3772) [
<values omitted>
],
value: [ [ObjectIdentifier], [Constructed] ],
isIndefiniteForm: true
}
}
After decoding the nested value like this:
const result1 = fromBER(newReceiptBuffer);
const result2 = fromBER(result1.result.valueBlock.valueBeforeDecodeView);
console.log(result2.result.toJSON());
I get this result. Any idea how to proceed from here?
{
blockName: 'OBJECT IDENTIFIER',
blockLength: 11,
error: '',
warnings: [],
valueBeforeDecode: <omitted hex value 32 characters in length>,
idBlock: {
blockName: 'identificationBlock',
blockLength: 1,
error: '',
warnings: [],
valueBeforeDecode: '',
isHexOnly: false,
valueHex: '',
tagClass: 1,
tagNumber: 6,
isConstructed: false
},
lenBlock: {
blockName: 'lengthBlock',
blockLength: 1,
error: '',
warnings: [],
valueBeforeDecode: '',
isIndefiniteForm: false,
longFormUsed: false,
length: 9
},
valueBlock: {
blockName: 'ObjectIdentifierValueBlock',
blockLength: 9,
error: '',
warnings: [],
valueBeforeDecode: '',
value: '1.2.840.113549.1.7.2',
sidArray: [ [Object], [Object], [Object], [Object], [Object], [Object] ]
},
name: '',
optional: false,
value: '1.2.840.113549.1.7.2'
}
Thanks! That solved the issue. This part should really be modified in the sample app:
private lazy var requestOptions: PHImageRequestOptions = {
let options = PHImageRequestOptions()
options.deliveryMode = .opportunistic
options.isNetworkAccessAllowed = true // <- Add this
return options
}()
The problem appears to be a recent version of the WebRTC package. Details here.
RTCMTLNSVideoView works natively on macOS for me with M116, but not with later versions of the WebRTC package.
The same issue was reported by several users in this discussion and appears to be still unresolved: https://developer.apple.com/forums/thread/740923
I'm also having these issues, and background notifications (sent from my server and CloudKit subscriptions) are vital to my app. I have a macOS version of my iOS app ready to go, but this bug is blocking its release.
Judging from these discussions I found, these issues have persisted for more than a year by now. Is there any hope of a resolution from Apple?
https://stackoverflow.com/questions/74868553/apple-push-notifications-arriving-on-macos-but-not-in-the-application-itself
https://github.com/raivo-otp/macos-receiver/issues/15
I verified in the Push Notifications Console that the notification was "successfully delivered to the target device", however the didReceiveRemoteNotification delegate method is not triggered on macOS.
I'm getting this error too. The passkey sign-in request isn't even reaching my server, so the problem must be on the device. Has anyone found a solution yet?