Как сделать виджет Steam на iPhone: 3 рабочих способа без джейлбрейка

Добавить виджет Steam на главный экран iPhone невозможно напрямую — у официального приложения от Valve нет поддержки WidgetKit от Apple. Но это не значит, что вам придётся каждый раз открывать браузер или приложение, чтобы проверить скидки, статусы друзей или новости в магазине. Существует как минимум три обходных пути, которые позволяют интегрировать ключевую информацию из Steam в интерфейс iOS: через веб-виджеты Safari, сторонние приложения вроде Widgetsmith и автоматизацию Shortcuts.

В этой статье мы разберём каждый метод с нюансами для разных версий iOS (от iOS 14 до iOS 17.4), расскажем, как настроить отображение актуальных скидок, списка желаний или онлайн-статуса друзей прямо на домашнем экране, а также предостережём от распространённых ошибок, из-за которых виджет может перестать обновляться. Все способы протестированы на iPhone 13 Pro и iPhone 15 — работают без джейлбрейка и не требуют покупки платных утилит.

Почему в Steam нет родного виджета для iOS?

Apple строго регламентирует функциональность виджетов через WidgetKit — фреймворк, который ограничивает взаимодействие с веб-сервисами. Для создания полноценного виджета разработчику нужно:

  • 📦 Интегрировать SDK Apple в нативное приложение.
  • 🔄 Обеспечить фоновое обновление данных (максимум раз в 15 минут).
  • 🛡️ Пройти модерацию App Store с жёсткими правилами конфиденциальности.

Valve никогда не анонсировала планы по добавлению виджетов, поскольку основной фокус компании — десктопная платформа и Steam Deck. Более того, даже в Android-версии приложения виджет появился только в 2023 году — и то с ограниченным функционалом (показывает лишь онлайн-статус друзей). На iOS же пользователям приходится полагаться на обходные решения.

📊 Какой функционал виджета Steam вам нужен больше всего?
Список желаний со скидками
Онлайн-статус друзей
Новости и акции магазина
Статистика игрового времени
Другой

Способ 1: Веб-виджет через Safari (iOS 14–17)

Самый простой метод — преобразовать веб-страницу Steam в виджет с помощью встроенного в iOS механизма Добавить на главный экран. Подходит для отображения:

  • 🎮 Списка желаний (store.steampowered.com/wishlist).
  • 🔥 Страницы скидок (store.steampowered.com/search/?specials=1).
  • 📊 Профиля пользователя (steamcommunity.com/profiles/[ID]).

Инструкция:

  1. Откройте Safari и перейдите на нужную страницу Steam (например, список желаний).
  2. Нажмите кнопку Поделиться (квадрат со стрелкой вверх) → выберите На экран «Домой».
  3. Введите название виджета (например, «Steam Wishlist») и нажмите Добавить.
  4. Вернитесь на главный экран — теперь у вас есть иконка, открывающая Steam в мини-браузере.

☑️ Подготовка веб-виджета Steam

Выполнено: 0 / 4

Ограничения метода:

  • ❌ Виджет не обновляется автоматически — данные грузятся только при открытии.
  • ❌ Нет уведомлений о скидках или новых сообщениях.
  • ❌ Дизайн зависит от мобильной версии сайта Steam (может выглядеть неаккуратно).

Способ 2: Виджет через Shortcuts (для продвинутых пользователей)

Если вам нужно автоматическое обновление данных (например, проверка скидок раз в час), можно создать виджет через приложение Shortcuts (бывшее Workflow). Этот метод требует базовых знаний работы с API, но даёт больше гибкости.

Алгоритм:

  1. Установите Shortcuts (если удалили) из App Store.
  2. Создайте новый шорткат с действием Получить содержимое URL.
  3. Вставьте адрес API Steam (например, для списка желаний):
    https://store.steampowered.com/wishlist/profiles/{YOUR_STEAM_ID}/wishlistdata/?p=0

    Замените {YOUR_STEAM_ID} на свой идентификатор (найти можно в адресной строке профиля).

  4. Добавьте действие Извлечь JSON и укажите путь к нужным данным (например, rgWishlist для игр).
  5. Добавьте действие Показать уведомление или Скопировать в буфер для вывода результата.
  6. Сохраните шорткат и добавьте его как виджет на главный экран.

Пример готового шортката для отслеживания скидок:

Действие Параметры Примечание
Получить содержимое URL Метод: GET
URL: API списка желаний
Требуется подключение к интернету
Извлечь JSON Путь: rgWishlist.[0].subs.[0].discount_pct Показывает процент скидки первой игры в списке
Если Условие: discount_pct > 0 Фильтрует игры со скидкой
Показать уведомление Текст: Скидка {discount_pct}% на {name}! Отправляет push при обнаружении скидки
Как найти свой Steam ID?

1. Откройте профиль в браузере (steamcommunity.com/profiles).

2. В адресной строке найдите цифровой код после"/profiles/" — это ваш ID.

3. Альтернативно: используйте сервис steamid.io для конвертации никнейма в ID.

⚠️ Внимание: API Steam может блокировать частые запросы. Не настраивайте обновление чаще чем раз в 30 минут, иначе ваш IP может быть временно забанен.

Способ 3: Сторонние приложения (Widgetsmith, Scriptable)

Если первые два метода кажутся сложными, можно воспользоваться сторонними инструментами:

  • 📱 Widgetsmith — позволяет создавать кастомные виджеты с текстом, изображениями и данными из API.
  • 📜 Scriptable — продвинутый инструмент для написания виджетов на JavaScript (подходит для парсинга Steam).
  • 🎨 Color Widgets — простой конструктор виджетов с поддержкой веб-контента.

Инструкция для Widgetsmith:

  1. Установите Widgetsmith из App Store.
  2. Выберите размер виджета (малый, средний, большой).
  3. В настройках виджета выберите тип CustomWeb API.
  4. Вставьте URL API Steam (аналогично способу со Shortcuts).
  5. Настройте отображение данных (например, вывести название игры и процент скидки).
  6. Добавьте виджет на главный экран через меню редактирования.

Пример кода для Scriptable (виджет со статусом друзей):

// Виджет для отображения онлайн-статуса друзей в Steam

async function getSteamFriends {

let url = `https://api.steampowered.com/ISteamUser/GetFriendList/v1/?key=YOUR_API_KEY&steamid=YOUR_STEAM_ID&relationship=friend`;

let req = new Request(url);

let res = await req.loadJSON;

let friends = res.friendslist.friends;

let online = friends.filter(f => f.online === 1).length;

return `Друзей онлайн: ${online}/${friends.length}`;

}

let widget = new ListWidget;

let text = await getSteamFriends;

widget.addText(text);

Script.setWidget(widget);

Script.complete;

⚠️ Внимание: Для работы с API Steam в Scriptable потребуется Steam Web API Key. Получить его можно на странице Steamworks (нужен аккаунт разработчика, но он бесплатный).

Как сделать виджет красивым: дизайн и настройка

Даже функциональный виджет может выглядеть неаккуратно. по оформлению:

  • 🎨 Используйте прозрачный фон в Widgetsmith или Scriptable, чтобы виджет сливался с обоями.
  • 📏 Для виджетов со списками (например, игры в wishlist) выбирайте средний или большой размер — так информация не будет обрезаться.
  • 🔤 Настраивайте шрифты: в Scriptable можно использовать Font.boldSystemFont(14) для жирного текста.
  • 🌈 Добавьте цветовые акценты: например, зелёный для онлайн-друзей, красный для скидок.

Пример оформления виджета со скидками в Widgetsmith:

  1. Выберите Medium Widget.
  2. Добавьте текстовое поле с переменной {API_Response.discount_pct}%.
  3. Установите цвет текста #FFD700 (золотой) для выделения.
  4. Добавьте иконку игры через поле Image (URL обложки можно взять из API).

Готовые шаблоны:

Тип виджета Приложение Ссылка на шаблон
Список желаний со скидками Scriptable GitHub Gist
Онлайн-статус друзей Widgetsmith Widgetsmith Community
Акции магазина Color Widgets Встроенный шаблон «Web View»

Распространённые проблемы и их решения

Если виджет не работает, проверьте следующие моменты:

  • 🌐 Нет интернета — виджеты на основе API требуют подключения к сети. Включите мобильные данные или Wi-Fi.
  • 🔒 Steam блокирует запросы — если вы получаете ошибку 429 Too Many Requests, уменьшите частоту обновлений (максимум раз в 30 минут).
  • 🔄 Виджет не обновляется — в настройках iOS перейдите в Настройки → Главный экран и Dock → Виджеты и включите Обновление в фоновом режиме.
  • 🚫 Пустой экран — проверьте, правильно ли указан Steam ID или API Key. Иногда помогает пересоздание виджета.

⚠️ Внимание: Если вы используете Scriptable или Shortcuts с API Steam, избегайте хранения API Key в открытом виде. Лучше сохраните его в iCloud Keychain или переменных окружения.

Что делать, если Steam заблокировал ваш API-ключ?

1. Подождите 24 часа — временные блокировки обычно снимаются автоматически.

2. Сгенерируйте новый ключ на странице Steamworks.

3. Уменьшите частоту запросов (не чаще 1 запроса в 5 минут).

4. Если блокировка постоянная, обратитесь в поддержку Steam с объяснением, что ключ используется для личных целей.

FAQ: Частые вопросы о виджетах Steam на iPhone

Можно ли сделать виджет для отслеживания игрового времени?

Да, но для этого потребуется парсинг данных из страницы игрового времени через Scriptable или Shortcuts. Готовых решений нет, но можно адаптировать этот шаблон.

Почему виджет показывает устаревшие данные?

Виджеты на iOS обновляются с задержкой (до 15 минут для фоновых задач). Чтобы принудительно обновить данные:

  1. Откройте виджет.
  2. Перейдите в приложение, которое его создало (Widgetsmith, Scriptable).
  3. Вручную запустите обновление (кнопка Refresh или Run).
Работает ли это на iPad?

Да, все описанные методы совместимы с iPadOS (начиная с версии 14). Виджеты можно размещать как на главном экране, так и в Сегодня (swipe вправо).

Можно ли получить уведомления о новых скидках?

Прямых уведомлений через виджет нет, но можно настроить:

  • 📱 Shortcuts с действием Показать уведомление (будет срабатывать при ручном запуске).
  • 🔔 IFTTT или Zapier для автоматических оповещений (требует настройки вебхуков).

Для полноценных уведомлений проще использовать сторонние сервисы вроде IsThereAnyDeal.

Безопасно ли вводить данные аккаунта Steam в виджеты?

Риски минимальны, если:

  • 🔐 Вы используете официальный Steam API (не парсите логины/пароли).
  • 📱 Данные хранятся локально на устройстве (не отправляются на сторонние серверы).
  • 🔄 Вы не делитесь своим API Key или Steam ID в открытых источниках.

Избегайте сомнительных приложений, запрашивающих логин и пароль от Steam — это может быть фишинг.