16 августа 2010, 03:42 (5212 дня назад, №8798)Facebook - уведомления
Понадобилось сделать так, чтобы от приложения в Facebook'e пользователю (его установившему) приходили уведомления о некоторых событиях (именно личные - не на стену). И неожиданно оказалось, что это невозможно.
Причём, на установление этого простого факта потребовалось довольно много времени, т.к. facebook'овцы (как я уже года полтора назад
заметил) мало того, что не обновляют документацию, так еще и довольно произвольно перестают поддерживать, либо выключают различные фичи.
Информация о том, что там еще работает, а что уже нет - передаётся народом в виде крупиц бесценной информации по разным форумам и блогам.
Итак, что удалось понять:
Раньше у них было два работающих метода - notification.send и notification.sendEmail
Первый они прикрыли, и из документации он исчез. Второй - в документации остался, но судя по форумам - не работает. Я наскоро проверил - похоже, действительно не работает (даже если бы работал - оперативность и удобство получения уведомлений по email - мягко говоря, не соответствует задаче).
Уведомления они решили изжить вполне целенаправленно. Здесь об этом написано просто открытым текстом: "We've removed application-to-user notifications and user-to-user notifications".
Взамен предлагается использовать ряд возможностей, ни одна из которых не позволяет лично уведомлять пользователя о произвольном событии в приложении.
Если брать мою конкретную задачу, то я обратил внимание на dashboard.publishActivity и dashboard.setCount
Сразу скажу, что dashboard - это такие два загадочных и малоизвестных места, куда попадаешь, когда нажимаешь в левой колонке на Games или на Applications (если у вас слева нет Games и Applications, надо сначала еще нажать "More" :)
Ну так вот, dashboard.publishActivity помещает сообщение именно туда. Как нетрудно догадаться, его никто никогда не увидит.
Второй метод, dashboard.setCount - интереснее. Он позволяет помещать рядом с названием приложения в левой колонке произвольную цифру. На самом деле, в левой колонке приложения оказываются только после добавления их в букмарки (хотя очень похоже, что теперь все добавленные приложения оказываются в букмарках автоматически).
Так вот, попытался я вызвать этот setCount. Прекрасно вызывается, по всем признакам успешно выполняется. Но никаких цифр рядом не появляется. Я два часа развлекался - пробовал и incrementCount, вызывал getCount (убедился, что цифра действительно записывается, просто она не показывается). Потом набрёл на вот это.
Оказывается, эта единственная фича, которая позволяет хоть как-то уведомлять пользователя о событии - уже неделю как сломана!
Такая вот история.
Опуская историю с последним багом, в целом, вот что мне непонятно - ну допустим, они убрали уведомления потому, что приложения доставали пользователей спамом. Это можно понять. Но что помешало сделать простую кнопку типа "Скрыть уведомления от этого приложения"? (тем более, что глубоко в настройках такая возможность и так есть - там можно отменить разрешения на конкретные действия, данные при установки приложения). На стене же такую кнопку давно сделали.
Собственно, вся эта картина очень хорошо иллюстрирует любовь Facebook'овцев к максимальному усложнению простых вещей и размножению сущностей (от интерфейса, до API и далее). В этом смысле, кстати, "Мой Мир" идёт в том же направлении (несмотря на внешнюю непохожесть), а вот ВКонтакт - пока нет.