Ответы пользователя по тегу iOS
  • Курс по IOS разработке?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Это больше предположение, но оно основано на моем профессиональном опыте. Вы не можете найти достаточно полные курсы по SwiftUI, потому что SwiftUI до сих пор сырой и не закрывает все задачи. Я пока ни разу не встречал проекты крупнее и сложнее тех, которые вы видите в туториалах, чтобы они целиком (не отдельные компоненты) были построены на SwiftUI без костылей, и команды, которые не ломали голову с тем, как его интегрировать.

    Сейчас UIKit — это по-прежнему основной UI-фреймворк, без знания которого в реальных проектах не обойтись. Сториборды, которые вы упоминаете, — это всего лишь инструмент для визуальной верстки. Работать с UI в UIKit можно целиком в коде.
    Ответ написан
    Комментировать
  • Апп, лочащий планшет с iOS или Android каждые 10-15 минут и требующий решить арифметическую задачу для разлочки?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    В iOS есть два инструмента, которые в теории можно использовать для вашей задачи: Guided Access и Screen Time.

    Guided Access позволяет закрепить на экране одно приложение, выйти из которого можно только после ввода пароля. Такое иногда используют в магазинах или ресторанах, чтобы превратить устройство в «киоск», на котором смотреть каталог / меню можно, а делать все остальное — нет.

    С помощью Screen Time вы можете настроить список разрешенных / запрещенных приложений (в том числе по графику или продолжительности). Например, разрешить YouTube на один час в день по будням и три часа по выходным, а обучающие приложения разрешить без ограничений.

    Если говорить про сугубо техническое решение, я это вижу так: приложение, которое совмещает в себе учебу и развлечения («решил задачку — продлил мультик на 15 минут»), которое закрепляется с помощью Guided Access. Я не знаю, существуют ли такие приложения на рынке, но вы можете поискать.
    Ответ написан
    Комментировать
  • Как редактировать содержимое ячейки таблицы в Swift 5?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Навскидку у вас два варианта: произвести изменения непосредственно в ячейке или обновить источник данных и перезагрузить ячейку.

    Первый вариант сложнее в реализации, не вполне соответствует архитектурному подходу, который Apple рекомендует использовать (нагрузка ячеек кучей функционала мешает оптимизациям и может привести к UI-лагам), и уместен в очень редких ситуациях, поэтому я не буду вдаваться в детали.

    Второй вариант решает ~90% задач и реализуется максимально просто. У вас есть массив с модельками, к которому таблица обращается в методе tableView(_:cellForRowAt:). Когда нужно изменить содержимое ячейки, вы меняете данные массиве, а потом вызываете метод reloadRows(at:with:) с индексом изменившегося элемента. Если приложение не поддерживает iOS 12 и более старые версии, перезагрузка ячеек может происходить автоматически — см. UITableViewDiffableDataSource.
    Ответ написан
    Комментировать
  • Можно ли в ios приложении добавить баннер пополнения баланса через сайт?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Многое зависит от того, за что именно платят ваши пользователи, а вы это не уточнили в вопросе.

    Оплата через iTunes обязательна для контента, который «потребляется» внутри приложения (примеры: виртуальная валюта в игре, отключение рекламы, подписка на аудиокниги*). Если у вас что-то другое — интернет-магазин, электронный кошелек и т.д., — эти ограничения не действуют: можете хоть веб-вью открывать, хоть нативную форму для реквизитов показывать.

    При худшем раскладе вы можете сообщать в приложении, что регистрация доступна в другом месте (не уверен, что более детальное упоминание, тем более кнопки, проходят ревью), а уже там рассказывать про оплату. Впрочем, какое-то время назад я видел в приложении ЛитРес огромный банер с предложением оформить подписку, ведущий на сайт. Это 100% нарушало правила стора, но к пользователям все равно попало.

    * Для так называемых reader apps с недавних пор действует исключение: в них теперь можно сообщать, что регистрация / подписка / оплата доступна в браузере, и показывать кнопку, отправляющую туда. Определение и примеры reader apps можно найти в правилах App Store, вот несколько: Netflix, Amazon Prime Video, Spotify, Kindle.
    Ответ написан
  • Если приложение использует Https запросы, мне нужно указывать, что это является шифрованием в App Store Connect?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    В App Store Connect просят указать, использует ли приложение шифрование, которое не входит в список исключений (для этого списка не требуется предоставлять документацию).

    Подробное описание правил и процессов есть в документации.

    А здесь можно найти таблицу с видами шифрования и целями использования. Для обычных HTTPS-соединений дополнительная информация не требуется.
    Ответ написан
    Комментировать
  • Как слать push со звуком на IOS?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Да, разрешение на звуки в пуш-уведомлениях нужно запрашивать явным образом. Только после этого такой пункт появится в настройках и, собственно, начнут проигрываться звуки.

    Обратите внимание на элемент .sound внутри массива, переданного в options:

    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        
    }


    Подробнее можно почитать в документации (код выше взят из нее).
    Ответ написан
    Комментировать
  • Как Instagram под iOS запоминает логин и как удалить все его данные, чтобы он заново запросил логин?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    При необходимости разработчик приложения может выставить записям в Keychain такие атрибуты доступа, с которыми эти записи будут храниться локально и не попадут в iCloud Keychain. Вы можете найти эти атрибуты в документации: у них есть суффикс ThisDeviceOnly. Вот что говорится в описании к каждому из них:
    Items with this attribute do not migrate to a new device. Thus, after restoring from a backup of a different device, these items will not be present.


    В iOS доступ к Keychain-секретам имеется только у того приложения, которое их создало. Ни другие приложения, ни сам пользователь не могут обращаться к чужим записям. Как следствие, существует только один способ удалить записи без участия создавшего их приложения — стереть все данные с устройства.

    P.S. Стоит добавить, что удаление самого приложения записи в Keychain не задевает — они будут храниться и дальше.
    Ответ написан
    3 комментария