2016-09-01 1 views
1

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

Фактически, если пользователь удаляет и переустанавливает ваше расширение, идентификатор будет изменен - ​​точно так же, как identifierForVendor на .

From the docs:

Этот UUID является областью действия данного устройства. Он остается стабильным при условии, что расширение включено. Если расширение отключено и повторно подключено, или если существующее приложение удалено и переустановлено, изменяется UUID для локального участника.

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

Стоит добавить, что для Идентификаторов сообщений есть several open radars, не менее this one, так что вы можете быть правы, что это ошибка.

+0

ОК, я понимаю конфиденциальность, но это безумие. Пользователь играет в игру с другой стороны и, как ожидается, по крайней мере обменивает IDS с этим человеком. Если вы разговариваете с другим человеком по сообщениям, человек с другой стороны знает ваше имя/ник/оповещение по сообщениям, поэтому абсурдно блокировать другую сторону от знания вашего UUID и, поскольку вы должны нажимать отправить, чтобы отправить сообщение, делает спам невозможным, если вы не разработаете робота с механической рукой, чтобы нажимать сообщения на огромный список и нажимать на отправку каждый раз ... спасибо в любом случае! – SpaceDog

+0

Самое страшное в отношении всех этих ошибок: Apple выпустила iOS 10 и Xcode 8 Golden Master, и они все еще содержат эту ошибку, что означает, что они, вероятно, отправят одну из основных функциональных возможностей iOS 10, что типично для Apple, поскольку мы видели это несколько раз. Очень грустный. – SpaceDog

+0

Вам удалось найти обходное решение? Использование чего-то другого, а не UUID? Странно, что они это сделали.Спасибо – RJiryes

Смежные вопросы