Странная вещь, продолжающаяся с 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 подстроил так, чтобы он выглядел как две учетные записи, даже если это одно устройство. Я подозреваю, что когда вы запускаете один и тот же код на двух реальных устройствах, вы найдете два совершенно разных числа с обеих сторон.

Стоит добавить, что есть несколько открытых радаров для идентификаторов сообщений, не в последнюю очередь, поэтому вы можете быть правы, что это ошибка.

Другие вопросы по тегам