Как стать автором
Обновить

Комментарии 26

Как говорится, eat your own dog food. Разработчики фейсбука свой SDK не используют, у них и нет проблем (или обновляют его вместе с приложениями, вот последняя версия и работает). А то что у других всё колом стало — это их деньги и заботы.


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

А что вы предлагаете? Не использовать Facebook SDK? Это практически невозможно в современной мобильной разработке.

Слава Богу, что хирурги все еще могут делать операции без fb sdk. Этот мир сходит с ума.

Обвешать try/catch и аккуратно обрабатывать исключения не пробовали? Вот вообще не понятно, почему основной функционал Viber-а без Facebook SDK работать не может…
Вы не поверите, но в айфонах это не выйдет by design.
Упало в таком месте, которое не обвесить.

Ради справедливости: Есть версия что обвесить можно было, но сильно нетривиально. Разумный разработчик так в таком месте код писать не будет. Хотя после такого может и начнут.
Как выяснилось, их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения, и там же вчера падало. То есть ты как разработчик мог бы вообще ни одного метода Facebook SDK не вызвать, но приложение сломалось бы уже от одного лишь факта подключения библиотеки. Итого, try/catch здесь не помогли бы.

Пофиксить такую беду можно, но это действительно относительно нетривиальная задача. Видимо, теперь iOS-разработчики обратят на это больше внимания.

"их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения"
Это вообще законно? А есть информация, что им такого понадобилось перекрывать там?

если API платформы позволяет, то почему бы и да?

Для этого не нужно какое-то приватное системное API или вроде того, так что законно, да. Таким образом они автоматически инициализируют библиотеку, оставляя этот процесс под собственным контролем.
Я скорее к тому, что с одной стороны 'системный метод, вызываемый при запуске приложения', а с другой 'приложение сломалось бы уже от одного лишь факта подключения библиотеки'.

Т.е., я правильно понимаю, что это системный вызов, который вызывается при запуске ЛЮБОГО приложения?

Да, это «didFinishLaunching»

их SDK переопределяло внутри себя системный метод, вызываемый при запуске приложения

Идея авторов библиотеки делать успешность запуска любого приложения, использующего эту библиотеку, зависимой от работоспособности удаленного стороннего (по отношению к авторам приложения) сервера — это за гранью добра и зла.

Ну вряд ли они планировали, что повлияют на запуск приложений — вероятно, просто в нужном месте забыли поставить try/catch

Разраб "1" фейсбука, который писал код, переопределяющий внутри себя системный метод не думал, что при развитии библиотеки туда будет вставлен код, ходящий по сети. Разраб "2" фейсбука, который писал некий код для SDK, ходящий по сети, не думал, что тот будет вызван при инициализации библиотеки. Разраб "3" фейсбука, который на хуке системного метода, реализованного разрабом "1", воткнул вызов кода, написанного разрабом "2", и не подумал, что возможен данный факап: "Я думал, что везде в критических местах проставлены try/catch".


А в это время где-то на полочке в фейсбучной jira покоится и ждет своего героя эпик: "Facebook SDK: unattended, safe and lazy SDK initialization"

Вы не поверите, но многим не только Facebook SDK, но и сам Facebook не нужен

Да ну чо правда что ли? Получается что сначала сделали fd sdk и только потом появилась мобильная разработка? А может признаемся себе что ленивые головотяпы в мобильной разработке не хотят работать, а хотят как мартышки брать чужое где надо и не надо.
Некоторые разработчики в своё время использовали Google+ в качестве логина в свои приложения, там тоже довольно неплохо получилось

Мне показалось или это уже было?

Было в мае, да
В последние пару лет многие сайты дико тормозят из-за перегруженности кросс-ссылками и отсутствия асинхронной загрузки всего этого барахла богатого функционала.
Вчера с утра на несколько часов вырубились вышки мегафона(и йота тоже соотв.), причём судя по сообщениям одновременно в нескольких разных городах(Москва, Санкт-Петербург, Самара, Краснодар, Екатеринбург, Иркутск). Не было ни резервных передатчиков, ни даже несущей частоты. Только голос кое как работал и то видимо через роуминг(т.е. оператор сам переключил клиентов) и местами.
Часам к одиннадцати частично заработал ЛК, а смартфоны подключенные к wi-fi(с usb свистком йоты) требовали авторизации(как в общественных сетях).Потом полностью восстановили.

Интересно, зачем разрабы мобильных приложений включают FB SDK, как зависимость? Для того, чтобы можно было логиниться и публиковать через FB, или какие-то дополнительные плюшки?

Логин и сервис аналитики
Реклама, если ты хочешь эффективно давать рекламу на Facebook, нужно включать, иначе Facebook будет рекламный бюджет просаживать мимо целевой аудитории.

Вот теперь сиди и думай: стоит ли размещать внутри своего приложения нестабильные библиотеки ради такого профита.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Другие новости

Истории