VK app: проба пера с iframe

Очень давно хотелось попробовать написать iframe приложение для "ВКонтакте" - всё руки не доходили. А тут недавно добавили API для геолокации - теперь можно ставить в статус отметку о местоположении. Я просто не могу упустить шанса что-нибудь попробовать написать, тем более, что на момент написания таких приложений я не нашёл.

1. Мой IP адрес



Для разминки решил написать достаточно тупое приложение, которое показывает информацию о IP клиента, его местонахождение и провайдера. Не смотря на простоту пришлось помучитсья - написал парсеры к нескольким сайтам, whois. В самом начале определялось совершенно криво, о чём народ написал в комментах. Фидбек это хорошо.

В данном случае не смотря на обещание заголовка "Мой IP адрес" пользователь получает ещё и дополнительную информацию, которую мне не сложно добавить, а ведь выглядит как бонусная фитча. Т.е. помимо основной услуги, даётся дополнительная. Хоть и услуга бесплатная (почти - контекстная реклама). Надеюсь я правильно размышляю.

Темп роста пользователей меня удивил - никому не сообщая о том, что я сделал в первые сутки приложение установили ~50 человек(причём никто из друзей). Как теперь я понимаю - это мало. Можно объяснить аудиторией - практически все настроенны получать эмоциональную состовляющую(тупо играть), а не практическую.



2. Я здесь



После разогрева в виде первого взялся за checkin сервис - подобие gowalla & 4sq. У этого приложения большой плюс в том, что не требуется установки никаких приложений и не требуется GPS приёмник. Достаточно выбрать на карте место, где ты находишься и отметится. Приложение запрашивает текст статуса и короткую информацию о заведении(если ещё его не было, на данный момент по питеру мало точек в базе vk)

Спустя 4 дня полсле выпуска первой версии (почему то аппрув администрации вк длился больше суток) одно из конкурирующих приложений, которое занималось отметкой друзей у себя на карте добавило возможность ставить отметку в статус. Не много опоздал.

Благо есть куда развивать, посмотрим что из этого выйдет :)



Немного технической стороны

Документация API заметно изменилась за год - стала структуризованная, с простыми примерами. Единственный минус, которого заметно не хватает - не описано какими способами можно вызывать данную функцию(с клиента или с сервера). Потратил достаточно времени, чтоб понять, что метод location.search не работает со стороны сервера..

Не забывайте также добавлять test_mode = 1 в ваши запросы, если приложение ещё не одобренно администратором. Могу поделиться классом, в котором из конфига читаются значения app_id и secret_key и когда нужно(если определён TEST_MODE), а так же добавлен singleton:

class VKapi extends Original_Vkapi {
private static $instance = null;

public static function getInstance() {
if (is_null(self::$instance)) self::$instance = new VKapi ();
return self::$instance;
}

public function __construct() {
self::$instance = & $this;
$vkconf = & Config::get('vkconf');
parent::__construct($vkconf->api_id, $vkconf->secret_key);
}

public function api($method, $params = array()) {
if (defined('TEST_MODE') && TEST_MODE) $params['test_mode'] = 1;
return parent::api($method, $params);
}
}

Соответственно нужно переименовать стандартный класс от разработчиков ВК в VKapi_Original.

Для быстрой разработки и действительно быстрой работы я взял давно зарекомендававший себя Simple PHP Framework, который, к сожалению, сильно испортился и оброс не понятными конструкциями за последний год. Пришлось поотрезать лишнее, часть заменить на своё. В конце концов такая концепция у этого фреймворка

Ровно год назад я
интересовался флексом под linux
и написал небольшое
приложение, копия "I'm rich" для iPhone.