Siskin uses the device name in order to set the resource string (UIDevice.current.name).
But in iOS 16, UIDevice.name has changed to only return the generic model of the device (e.g. 'iPhone'), not the user specified name.
Hence in iOS 16 Siskin exclusively sets 'iPhone' as resource string, which is not unique per device and is also rather unhelpful when debugging the same username logged in into several devices.
Typically, a resourcepart uniquely identifies a specific connection
Details (please complete the following information):
Siskin Version: 7.3.3
iOS version: 16.4.1
iPhone model: iPhone XR
Unknown commented 2 years ago
In the future version, we will drop usage of device name at all as the resource. As new version will support SASL2 and Bind2 we will use similar way to generate resource for SASL1 and Bind1 (random opaque string).
Describe the bug
Siskin uses the device name in order to set the resource string (
UIDevice.current.name
). But in iOS 16,UIDevice.name
has changed to only return the generic model of the device (e.g. 'iPhone'), not the user specified name. Hence in iOS 16 Siskin exclusively sets 'iPhone' as resource string, which is not unique per device and is also rather unhelpful when debugging the same username logged in into several devices.Proposed solution
com.apple.developer.device-information.user-assigned-device-name
should be used, instead ofUIDevice.current.name
, cf. https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_device-information_user-assigned-device-nameAlternative solution proposal Let the server generate the resource, cf. https://wiki.xmpp.org/web/XMPP_IM_Client_Design_Guidelines#Do_not_to_encode_any_semantics_into_the_resource,_let_the_server_generate_a_resource_for_you
To Reproduce Steps to reproduce the behavior:
Expected behavior Siskin uses the device name as base for the resource so that different devices also get different resources.
cf. RFC 7622
Details (please complete the following information):