ДМ / selado / ISART / MOUNT VII
58 subscribers
276 photos
54 videos
137 links
Download Telegram
Наверно, в любом коллективе время от времени рождаются локальные мемы. Для истории сохраню наши мемасы декабря, хоть они и в категории "memes without context".
Если это кажется лишним и вы на это не подписывались, дайте знать.
Чего не умеет Firebase

Сервисы Firebase от Google действительно хороши. Auth берет на себя всю работу с авторизацией (до сих пор не люблю писать авторизацию😅). Cloud Message шлет пуши. Storage хранит файлы. Даже на бесплатном тарифе нормальные квоты, которых хватит для небольшого проекта.
Realtime Database — это NoSQL база с нестрогой типизацией. К сожалению, она не умеет в запросы с просчетом на стороне сервера (либо я просто не знаю, как).

В #GetBetterApp есть фича "совет дня", у котого можно ставить лайк. Я хотел, чтобы на экране отображалось количество лайков всех пользователей. Долго думал, как лучше это реализовать. В итоге сделал таблицу tip_likes, в которой id - это id юзера, а внутри лежит массив id залайканных им советов. И чтобы показать количество лайков, приходится получать ВСЕ данные этой таблицы и искать вхождение текущего совета в каждой записи. И хорошо, если пользователей меньше 1к (как сейчас). А представьте размер JSON даже для 10к юзеров! Хотелось бы прямо в запросе делать entries.where { $0.contains(tipId) }.count и получать с сервера просто число, а не простынь.
График отправки и открытия пуш-уведомлений.
В декабре 2020 добавил пуши для советов дня. Заметно, что пользователи оценили и стали охотнее тапать по ним.
В январские праздники прирост новых пользователей сильно вырос: от 3-6 в день в 2020 до 10-15 в день сейчас.
#GetBetterApp
Уже несколько пользователей #GetBetterApp дали понять, что хотели бы видеть настройку времени для push-уведомлений. Ну что ж, этим я сегодня и занялся.

В Firebase на бесплатном плане доступны только 10 топиков. 2 уже заняты под текущие пуши, значит остается по 4 кастомных под эту задачу.
Раскидал так: Советы дня (6, 8, 10 и 12 МСК), Итоги дня (16, 18,20 и 22 МСК).

Как только все юзеры перейдут на новую версию 1.11, то старые топики удалю (и в коде надо будет убрать их упоминания).

Удалил сохранение настроек пушей из Firebase Database и перенес их в UserDefaults на устройстве. Потому что хранить конфиг в удаленной базе было лишним. Я совсем забыл, что подписка зависит от FCM-токена, который привязан к устройству. Простыми словами, можно было подписаться на айфоне, а на айпаде под тем же аккаунтом показывалось бы, что айпад тоже подписан (а это не так).

Пока что сборка только у меня на телефоне. Потестирую уведомления и если все ок, то на следующей неделе выпущу.
Слева: быстрый прототип
Справа: после ревью дизайнера
#GetBetterApp
Версия 1.11 уже в AppStore.
https://apps.apple.com/us/app/getbetter/id1522666671
Алмаз, тебе привет🖖
Каждый раз удивляюсь, как продолжают ухудшать популярнейший в своё время «файлообменник» Skype. Уже несколько раз (даже после нескольких обновлений), после запуска приложения звук на макбуке сам выставляется на 100%.
Играющая музыка взрывается громкостью и доводит меня до каления.
Ну и в целом, если честно, убогий мессенджер)
Забавно, но на собеседовании я уточнял, где ведется переписка в компании. Телеграм? Я согласен на оффер!
(Не) Всё получается

В какие-то дни у тебя всё получается. Задачи понятны и быстро закрываются. Внутри приятное удовлетворение от проделанной работы. В продукте работают твои фичи.

А случаются дни, когда ты закапываешься в проблеме. Уходишь дальше, шерстишь интернет, читаешь документацию. И итогом оказывается, что проблема не решается. А если это конец недели, то совсем грустно.
Не врываешься, а вползаешь в выходные с некоторым ощущением бесполезности.

Так вот, это нормально.

И вроде простая и понятная истина, но в моменте лично мне всегда сложно.
В выходные выкатил 1.12 версию #getbetterapp:
• Добавлен уровень сложности (для тех, кто активно пишет или же пишет редко)
• Настройка времени пушей стала удобнее
• Добавлено количество постов по месяцам

https://apps.apple.com/us/app/id1522666671
Цифры
Ровно год назад стартовала разработка #getbetterapp.
Полгода назад (9.07.20) я выложил приложение в AppStore.
Сегодня произошла 1000 регистрация аккаунта.
Ура👏
Раньше я очень любил обновлять софт

Меня завораживало, как ползут индикаторы загрузки, проценты обновления, как иконки на телефоне превращаются в "радар". Мне нравилось думать, что все мои программы становятся лучше.
Так было до того, как я стал разработчиком.

Теперь проблема версий влияет на работу, и лишний раз рисковать не хочется. По этой причине теперь я не спешу ставить мажорную версию ОС или IDE сразу после выхода, жду стабильной версии x.1. А еще лучше подождать, пока кто-то обновится и спросить — как у него, собирается ли проект.

Вот еще свежий пример. Обновил на днях в #GetBetterApp все поды, выкатил релиз в AppStore. И у меня перестала работать аналитика. Перечитал кучу форумов и stackoverflow. В итоге оказалось, что проблема в версии: Firebase/Analytics 7.5.0 не работает, а на 7.3.0 все хорошо. Откатился и до следующего релиза буду жить без аналитики.
Если бы #GetBetterApp были акциями, то вчера можно было бы фиксировать

Не знаю, с чем связан такой рост регистраций и использования. Возможно, с тем, что меня пригласили курировать студентов в мобильной лаборатории одного казанского ВУЗа.

Вчера была первая пара. У меня 11 человек, пришли 8. Рассказывали идеи своих будущих приложений. Идеи интересные: что-то завязано с тесную работу с другими юзерами, что-то должно по-умному работать с данными. Я все время выруливал беседу на вопрос — может уже есть аналог? Хороший research позволит сэкономить много сил на старте.

Приятно удивило, что несколько человек сказали, что сами напишут и поднимут бэк. Это круто, главное, чтобы мобилка была приоритетнее по вкладу и результату. Если вспомнить GetBetter, то Firebase сэкономил мне сотни часов разработки. С нуля до релизной версии прошло чуть больше 3 месяцев.
Наткнулся на vc.ru на пост Clubhouse - почему я не буду там регистрироваться (cutt.ly/Ulz66aO) и делюсь с вами, так как он точно описал мои ощущения.

Вокруг уже СЛИШКОМ МНОГО информации и залетать на еще один огонёк нет желания. Для работы и жизни нужно узнать еще очень много, и впитывать что-то рандомное мне кажется пустой тратой времени.
Да, в Clubhouse интересно (наверно), да, это хайп и модно. Но очень маловероятно, что это будет полезно.
По тем же причинам я не ставил себе TikTok (недавно сдался, так как Технократия завела себе акк, но позже снова удалил). В Instagram захожу раз в день. Лента ВК вообще каждый раз только портит настроение.
С некоторой периодичностью чищу подписки в youtube и телеге.

К следующей аттестации в Технократии надо подтянуть матчасть. Всегда есть чем заняться на пет-проектах. Есть дела по написанию учебной программы для iOS-стажеров. Для разгрузки мозгов есть UFC и FIFA (2-4 часа в неделю), и, конечно, футбол (четверг мой любимый день недели).
А еще, конечно, печатные книги. В них нет оповещений и это прекрасно.
Баг с удалением своего аккаунта

Один пользователь #GetBetterApp написал мне письмо: "Прошу сообщить, почему не удаётся удалить аккаунт в приложении GetBetter? Выдаёт ошибку." Я попросил скриншот ошибки, а сам запустил проект, чтобы воспроизвести ошибку. Создал анонимный аккаунт, жму "удалить" — все работает.

Приходит письмо со скриншотом. Ага, значит требуется повторная аутентификация. Читаю документацию: для критических действий требуется, чтобы пользователь недавно вошел в систему (менее 5 минут назад).

Давайте пофиксим этот баг 👇
Мапим ошибку Firebase на case .requiresRecentLogin и показываем понятное русское описание: "Для продолжения нужно снова авторизоваться".

Показываем алерт с TextField для пароля. Далее используем пароль для создания credentials:
guard let email = user.email else { return }
let credential = EmailAuthProvider.credential(withEmail: email, password: password)

Далее отправляем новый запрос:
user.reauthenticate(with: credential) { _, error in }
и если ошибка, то dismiss алерта и просьба начать заново.
Если же все ок, то снова пробуем user.delete(completion: { error in }

Фикс выкатил в версии 1.14 #GetBetterApp
Я уже писал, что в этом году планировал сделать #GetBetterApp платным. Долго размышлял, как лучше это сделать, как сообщить пользователям, когда изменить цену. Подписки мне не нравятся, единовременная оплата — самое то. Если просишь денег — предлагай что-то взамен.

Итоги размышлений такие:
Ориентировочные сроки выхода — июнь 2021.
До тех пор приложение можно скачать бесплатно. Бесплатным оно останется и для ранних пользователей.
С выходом версии 2.0 GetBetter будет стоить 99 рублей.

Планы на новую версию:
• Редизайн раздела Колесо Жизни
• Выбор фото через камеру или галерею
• Возможность загрузить несколько фото в один пост
• Новые ачивки и алерты при их достижении
• Новые Советы Дня, редизайн списка советов и просмотрщика
• 1000 символов вместо 300 в посте
• Умный поиск в Дневнике
• График изменения Колеса Жизни
• Английский язык в приложении

Есть публичное обещание и сроки. Осталось все это сделать😅