Странная вещь, продолжающаяся с UUID на расширении сообщений
Я создаю это расширение сообщений, которое является игрой.
Когда я получаю разговор о didBecomeActiveWithConversation
Я беру свой UUID и UUID противника, например:
myUUID = [conversation.localParticipantIdentifier UUIDString];
opponentUUID = [[conversation.remoteParticipantIdentifiers firstObject] UUIDString];
в этот момент, если я распечатаю это, я получаю что-то вроде
myUUID = 3A00236E-606E-41BE-BD11-97658AF13434
opponentUUID = 794DC7EB-E0AF-46CD-9BF0-5B6D39CC6773
Затем я делаю ход в игре и отправляю противнику.
На симуляторе я переключаюсь с "Kate" на "John Appleseed".
Когда метод didBecomeActiveWithConversation
снова запускается, теперь для другого пользователя я снова беру оба UUID. Это результат:
myUUID = 3A00236E-606E-41BE-BD11-97658AF13434
opponentUUID = B4621E05-4407-443E-9526-C8F0C82753D6
Какие? myUUID такой же, как и раньше, а мой противник UUID совершенно другой?? Переключая пользователей на сообщение, я ожидал увидеть записи в обратном порядке. Как это может быть? Ошибка?
1 ответ
Apple не любит выпускать номера, которые могут быть использованы для идентификации пользователей сверх того, что строго необходимо. В этом случае localParticipantIdentifier
Это свойство уникально для каждого устройства (поэтому у человека А разные идентификаторы на каждом устройстве, с которым он разговаривает) и при установке каждого приложения (поэтому два разных приложения будут видеть два разных идентификатора).
На самом деле, если пользователь удалит и переустановит ваше расширение, идентификатор будет изменен - так же, как identifierForVendor
на UIDevice
,
Этот UUID ограничен этим устройством. Он остается стабильным до тех пор, пока расширение включено. Если расширение отключено и повторно включено, или если содержащее приложение удалено и переустановлено, UUID для локального участника изменится.
Этот конкретный случай осложняется тем, что вы используете симулятор, который Apple подстроил так, чтобы он выглядел как две учетные записи, даже если это одно устройство. Я подозреваю, что когда вы запускаете один и тот же код на двух реальных устройствах, вы найдете два совершенно разных числа с обеих сторон.
Стоит добавить, что есть несколько открытых радаров для идентификаторов сообщений, не в последнюю очередь, поэтому вы можете быть правы, что это ошибка.