Фото близкого на домашнем экране и как оно туда попадает

Человек, на которого вы подписаны, снял сегодняшний кадр. В следующий раз, когда вы посмотрите на телефон, его лицо будет в виджете. Ни уведомления, ни звука, открывать ничего не нужно — в этом весь замысел, и это же та часть, которая заслуживает честного объяснения, а не утверждения.

Что происходит на самом деле

Когда снимок дообработан на сервере, вычисляется, кому он может быть виден, — и это не отдельное правило, придуманное для виджета. Это то же правило, по которому работает лента, прочитанное наоборот: вы видите чужой кадр, если подписаны на человека, если у него публичный профиль и если кадр лежит в том альбоме, который он сам выставил.

Каждому из этих людей уходит пуш, который не несёт ничего. Ни фотографии, ни имени, ни даже того, какой это был кадр, — только сигнал, что что-то изменилось. Телефон тихо просыпается, спрашивает у сервера самый свежий кадр, который ему можно, скачивает одну картинку и кладёт её туда, откуда читает виджет.

Почему пуш пустой

Это наименее очевидное решение здесь и то, из-за которого фича вообще жизнеспособна.

Тихий пуш ничем не гарантирован. iOS их придушивает, особенно у приложений, которые редко открывают, и волен их выбрасывать и склеивать по своему усмотрению. Если бы пуш нёс фотографию, каждый выброшенный пуш означал бы кадр, которого вы не увидели: информация умирала бы вместе с сообщением.

Пустой пуш испортить нельзя. Какой бы из них ни дошёл, он спрашивает самое свежее состояние мира, поэтому три склеенных и один доставленный дают ровно тот же результат, что и четыре доставленных. Склейка перестаёт быть потерей.

Чего мы не обещаем

Сроков. Большинство кадров приходит за минуту-две. Некоторые опаздывают: телефон лежал в кармане в лифте, или iOS решила, что приложение не заслужило пробуждения. Открытие приложения чинит это сразу, и следующий кадр друга тоже.

Всякий, кто обещает мгновенную доставку в виджет на домашнем экране, либо ошибается, либо шлёт вам уведомление и не говорит об этом.

Что там, когда никто ничего не снял

Остаётся последний пришедший кадр, и на нём стоит его дата — «вчера», «три дня назад». Виджет не пустеет и не притворяется, что кадр сегодняшний.

Если вы пока ни на кого не подписаны, виджет показывает ваш собственный последний кадр. Пустая коробка на домашнем экране — не фича, а новому аккаунту показывать некого.

Чего он не делает

Не уведомляет. Не издаёт звуков. Не показывает посторонних, рекомендованные аккаунты и вообще ничего ранжированного — только самый свежий кадр того, на кого вы подписались сами. И тап открывает этого человека, а не рекламу приложения.

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

Поставьте лицо на домашний экран

Виджет живёт в iOS-приложении. Сам Selfeed уже открыт в браузере.

Что ещё стоит объяснить — здесь.

Открыть приложение