• [iOS 10] Встраиваем поддержку Siri в свое iOS приложение
    +1
    Я ждал, что API Siri позволит распознавать любую речь внутри моего приложения, но получил возможность вставить кусочек моего приложения в Siri. На данный момент я пользуюсь только двумя сценариями Siri, которые выглядят примерно так:

    • Установи будильник на 7 утра
    • Напомни о конференции в четверг в 15-30

    Новое API добавляет с моей точки зрения только один полезный use case — «Вызови UBER/Яндекс.такси», и думаю именно для этих компаний оно и полезно.

    Не думаю, что кто-то будет активно пользоваться «Siri, отправить деньги», ведь это может быть и так:
    — Siri, отправь триста долларов моему брату
    — Окей, я отправляю три тысячи сто долларов в Apple.

  • [iOS 10] Встраиваем поддержку Siri в свое iOS приложение
    0
    Спасибо, проверил, добавил ваше предупреждение в начало статьи
  • [iOS 10] Встраиваем поддержку Siri в свое iOS приложение
    +1
    Попробуй перезагрузить iPhone, вдруг поможет (лично у меня разовая перезагрузка Mac и iPhone устранила несколько UI багов)
  • [iOS 10] Встраиваем поддержку Siri в свое iOS приложение
    0
    Среди новых команд к Siri вычитал такую «Насколько мощный мой компьютер». Попробовал… Видимо Siri видала железо помощнее моего Mac Pro :)

    image
  • [iOS 10] Встраиваем поддержку Siri в свое iOS приложение
    +1
    Да, macOS Sierra я тоже поставил. Традиционно перестали работать мои любимые CleanMyMac и HandsOff (Фаервол), но надеюсь в ближайшее время мне удастся их обновить.Что касается Xcode 8 beta — симуляторы работают, так же в Xcode немного изменился шрифт (особенно заметно на знаках препинания).

    Из того, что мне не понравилось (остальным возможно понравится) — в Xcode 8 переработали панель инструментов позиционирования (скрин), больше нет универсальной формы для всех девайсов — под каждый девайс отдельные настройки отступов. Кнопка «Clear Constaints» у меня перестала работать вовсе, никакой реакции, пришлось удалять «Constaints» вручную по одной из левого списка с иерархией форм. Перезагрузка не помогла. Буду разбираться.

    Но Xcode 7.3 (стабильный) у меня остался, так что нет причин переживать за невозможность собрать рабочий проект.

    image
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Ну я же написал, что «есть и другие методы обхода», спасибо за способ, полезный коммент, забираю к себе в заметки. Мне кстати по данной теме еще понравилось, как некоторые приложения обходят запрет за воспроизведение звуков во время телефонного звонка — они воспроизводят музыку через локальные in-app уведомления.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Ну все верно, iOS не позволяет создавать новые звуки в фоне, но разрешает в фоне держать «аудиопоток», который остается активным, и в котором можно будет воспроизводить звуки в дальнейшем. Помимо описанного в статье способа обхода запрета запуска новых звуков в iOS, есть и другие методы, которые и используют создатели iOS музыкальных плееров.

    Но если вы попробуете запустить в фоне звук с помощью классического метода:

    AVAudioPlayer *avPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:
        [NSURL fileURLWithPath:@"имя_файла.caf"] error:nil];
    [avPlayer play];
    


    — то звук в фоне не запустится. Именно поэтому, при воспроизведении музыки из VK через Safari на iOS — следующий трек не включается, если приложение свернуто.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    –1
    Первостепенная, в идеале хотелось бы, чтобы Core Audio стало частью новых общественных методов и аудио звонки вошли бы в состав стандартного VK SDK
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Да, только публичная информация, ФИО и список друзей.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Спасибо за ссылку, поигрался с приложением, работает :)
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Скиньте ссылку, пожалуйста, или название приложения, где это можно сделать.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Действительно, спасибо за ссылку
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Спасибо, я к сожалению в SIP мало понимаю, но постараюсь разобраться. Получается такая ситуация: у нас есть два iPhone, без выделенных IP, которые нужно соединить по UDP протоколу. Открыть UDP порт для принятия данных телефон не может. Каждый из них сначала опросит STUN сервер, чтобы узнать, что у него нет выделенного IP, хотя нужно ли это действие, когда и так понятно, что выделенного IP нету? Затем каждый из iPhone создаст постоянное TCP(!) соединение со своим TURN сервером, для того, чтобы иметь возможность через TURN сервер принимать (проксировать) UDP данные. В итоге, для того, чтобы соединить два телефона, у нас висит 2 TCP соединения, 2 UDP соединения (от клиентов на TURN сервер противоположного iPhone), да и еще коммуникация между TURN серверами + первоначальный опрос STUN серверов? И для чего такая сложная топология нужна — только для того, чтобы при потере пакетов не заморачиваться на повторную отправку данных? Верно я понимаю данную схему или допустил ошибку? Буду благодарен, если объясните.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    –1
    Все верно, в интернете есть примеры iOS RTP проектов, я так же пытался собрать и XMPP проект, но при выходе новых версий iOS — эти проекты у меня просто перестали компилироваться. Причем в старых версиях XCODE эти проекты собирались, но Apple запретил нам пользоваться старыми версиями XCODE, скаченными со сторонних ресурсов, под угрозой исключения приложений из App Store. Лично у меня не хватило терпения разобраться со всеми ошибками компилятора, если у вас есть рабочие iOS примеры — поделитесь с нами, пожалуйста.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Я понимаю, что, как сотрудник Voximplant, вы пытаетесь рекламировать свой продукт, возможно это и правильно, но не понимаю, как iOS пользователи без внешнего IP могут приватно совершать P2P звонки, не пропуская весь трафик через ваши сервера. Я понимаю, что большинство VoIP работают на UDP, но мне хотелось провести эксперимент с гарантированной доставкой пакетов, поэтому я попробовал использовать TCP для гарантированной передачи зашифрованных пакетов, чтобы принимающая сторона могла их гарантированно расшифровать.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    –1
    Платные решения я не рассматриваю по трем причинам (помимо той, что большинство этих решений написано на том же Core Audio):
    • Есть в наличии свои сервера.
    • Я планирую сделать приватные чаты с шифрованием по паролю. Использовать сторонние сервера — удар по приватности пользователей.
    • Работая со звуком на «низком уровне», есть возможность создавать голосовые фильтры, модифицировать голос, что я и хочу сделать в дальнейших обновлениях.
    Добавить поддержку видео в мое приложение на данном этапе — довольно просто, но тема для отдельной статьи.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Как я понимаю, "временный штампы" нужны для синхронизации видео потока с аудио потоком и субтитрами, а так же для обнаружения пропущенных семплов.
    Если вы посмотрите на код активации Callback в статье, вы увидите эту метку — AudioTimeStamp * inTimeStamp:
    #pragma mark ======== AudioUnit recording callback =========
    static OSStatus PushCurrentInputBufferIntoAudioUnit(void * inRefCon,
        AudioUnitRenderActionFlags * ioActionFlags,
        const AudioTimeStamp * inTimeStamp,
        UInt32 inBusNumber,
        UInt32 inNumberFrames,
        AudioBufferList * ioData)
    {
        //inTimeStamp - это и есть наша временная метка
    } 

    struct AudioTimeStamp {
        Float64 mSampleTime;   // временная метка в количестве семплов
        UInt64  mHostTime;   // временная метка в абсолютном системном времени
        // ...
        UInt32 mFlags;   // маска, указывающая на то, какие из полей заполнены
     };
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    Абсолютно верный и уместный комментарий, я планировал на сервере открыть 2 порта, один TCP: для авторизации и обменом ВК информацией, второй UDP: для пересылки аудио пакетов. Возможно, попробую UDP позже.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    0
    К сожалению по вашему линку устаревшая инструкция по сборке, в xcode 7.3 — pjsip не собирается на iOS, огромное количество ошибок. Часть ошибок я попробовал исправить, но потратив 10 минут, скомпилировать на iOS мне не удалось. Возможно, потратив больше времени, можно собрать pjsip на iOS 9, если у вас есть данный опыт, поделитесь готовым архивом с проектом. Тут еще дело в том, что мой сервер, написанный с нуля, помимо распределения аудио данных, рассылает IN-APP нотификации и синхронизирует информацию о VK друзьях с базой данных. В принципе можно модифицировать Kamailio сервер, но не уверен, что это тривиальная задача.
  • Пишем VoIP iOS чат на CORE AUDIO для конкурса VK Mobile Challenge
    –1
    Я не гоняю сырой wav, а использую нативный "Препроцессор".
    Если нужно именно mp3, то ищем в статье строчку кода:
    audioFormat.mFormatID = kAudioFormatLinearPCM;

    Заменяем на
    audioFormat.mFormatID = kAudioFormatMPEGLayer3;
  • Алгоритмы интеллектуальной автогенерации уровней в iOS игре
    0
    .
  • Алгоритмы интеллектуальной автогенерации уровней в iOS игре
    0
    Все верно, рисовать уровни в редакторе намного скучнее, чем разрабатывать сам редактор :) Но первые 2 уровня в игре ( туториал ) — я все же осилил и нарисовал вручную — нельзя же доверить первое впечатление об игре функции «рандом» :)
  • Алгоритмы интеллектуальной автогенерации уровней в iOS игре
    +1
    Отладить алгоритм конечно быстрее, чем вручную нарисовать бесконечное количество уровней :) На видео видно насколько «красивыми» получились карты, но конечно, уровни, которые нарисует дизайнер в редакторе карт — будут намного красивее. В принципе, дизайнера можно попросить рисовать «шаблоны» для генератора. Но от редактора карт я отказаться не готов, в игре часть уровней генерирована, часть уровней из редактора.