Балда iMessage

Вышла первая версия моей Балды для iMessage (можно играть в сообщениях только на устройствах Apple с операционной системой iOS 10 и выше). Игра написана в рамках изучения языка Swift.

Ссылка: https://itunes.apple.com/ru/app/balda-s-druz-ami/id980303614?l=en&mt=8

simulator-screen-shot-10-nov-2016-16-19-11simulator-screen-shot-10-nov-2016-16-19-19 simulator-screen-shot-10-nov-2016-16-19-30

Apple Pay

Ура, сегодня заработал Apple Pay в России на нормальных банках. Развлекались платежами с телефона через Рокет-карту в Маке и в Дирижабле) Работает! Но не сильно удобнее, чем картой. Карту все равно нужно с собой носить, потому что работает этот сервис не везде. Кошелек с картой достать быстрее, чем телефон с отпечатком. А часами платить не возможно, требует на них пароль ставить.

Apple customer

Поймал себя на мысли, что для того, чтобы переустановить систему, я сходил в магазин и купил новый SSD. Похоже, я превращаюсь в эталонного Apple customer (сел iPhone, пошел и купил новый).

На самом деле, мой старенький HDD сдох, и теперь у меня в системе 2 SSD.

Переустановил за два дня без особых проблем обе системы. Теперь у меня OS X El Captain 10.11.5 и Windows 10.

Короче, чем только не займешься лишь бы не работать 🙂

Решение проблемы с неудаляемыми играми

Существует официальный баг в Game Center API, когда из списка не удаляется GKTurnBasedMatch. Баг достаточно распространенный, он происходит главным образом тогда, когда активный участник покидает игру (вызов participantQuitInTurnWithOutcome:…) и удаляет ее из своего списка матчей. Игра получает какое-то неверное состояние, после чего остальные игроки не могут ее удалить из списка. Причем не могут как из интерфейса матч-мэйкера, так и вызовом removeWithCompletionHandler:… Возвращается ошибка номер 17 (Error=17) о том, что какие-то параметры заданы неверно. При этом сам матч может иметь уже статус завершенного GKTurnBasedMatchStatusEnded!

Как я уже отметил, Apple призналась в баге, но не исправила до сих пор.

Баг замечен, например, в игре Ой Ё. Об этом было сказано в их блоге. Мы тоже достаточно быстро столкнулись с этой проблемой, и она висела нерешенной почти два месяца. Тут, наконец-то, изучая многочисленные форумы мне удалось найти решение.

Суть в том, чтобы несмотря на завершенность матча попытаться (в случае возникновения ошибки) завершить свой ход, передав его любому другому участнику, затем выйти из игры ВНЕ хода и снова отправить запрос на завершения матча. Этот workaround помог мне со всеми неудаляемыми играми!

Вот код:

- (void) removeGameFromGC
{

    [_match removeWithCompletionHandler:
     ^(NSError *error) {
         if(!error)
         {
             DLog(@"match removed!");
         }
         else
         {
             [self reportError:error];

             GKTurnBasedParticipant *nextParticipant = nil;
             for (GKTurnBasedParticipant *participant in _match.participants)
             {
                 participant.matchOutcome = GKTurnBasedMatchOutcomeTied;
                 if(![TurnBasedHelper isHeLocal:participant.playerID])
                     nextParticipant = participant;
             }

             [_match endTurnWithNextParticipants:@[nextParticipant]
                                     turnTimeout:GKTurnTimeoutDefault
                                       matchData:nil
                               completionHandler:
              ^(NSError *error)
              {
                  if (error)
                  {
                      [self reportError:error];
                  }

                  [_match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit
                                        withCompletionHandler:
                   ^(NSError *error)
                   {
                       if (error)
                       {
                           [self reportError:error];
                       }
                       [_match removeWithCompletionHandler:^(NSError *error)
                        {
                            if (error)
                            {
                                [self reportError:error];
                            }
                        }];
                   }];
              }];
         }

     }];
}

Реджект Лаптички

Лаптичка ушла в реджект по моей глупости. Вчера вечером из Apple пришло письмо, что в мета-данных есть неиспользуемые в программе покупки, и попросили их убрать. Я вместо того, чтобы на месте все поправить, сразу жмякнул случайно на кнопку отправить… они юмор не оценили. М.. жду еще неделю.

Разработка Лаптички завершена!

Основная фаза разработки Лаптички закончена! Фуф 200 уровней! Завтра попробую снять ролик. Осталось немножко потестить, залить и утонуть в маркетинге. А пока спать!

[singlepic id=769 w=575]

Андроид, все познается в сравнении

Вобщем, у меня теперь появился девайс на Андроиде. И он мне нравится (еще бы не нравился!). Самое интересное, что Apple тоже делает девайсы с аналогичной функциональностью, но увы при примерно равной цене (точнее мой чуть дороже) качество не сравнимо выше. Оно даже удобнее. Я говорю, естественно о плеерах. Попозже – подробнее.

Щит и меч

Не могу это здесь не запостить ) Очень понравилась картинка. Одно не понятно: почему джедай с щитом? Особенно с пластмассовым… Выкинуть его!

[singlepic id=360]