Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2011, 11:52
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 1  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Одно приложение для нескольких соц. сетей

Привет.
Меня интересует структура одного приложения (организация системы доступа к api) для нескольких соц. сетей.
К примеру мы выяснили в какой соц сети запущено приложение.
Дальше нам необходимо запостить на стену (vk)/ленту (ok) сообщение.

Как это делаю я.
Создал интерфейс iSocialManager и 2 Класса, которые его имплементируют: VKManager и OKManager.
iSocialManager - содержит весь набор методов, которые реализуют VKManager и OKManager.
Меня смущает то, что в Классе VKManager есть метод (к примеру getImageUploadServer), который не используется в OKManager тем не менее я вынужден его создать в OKManager (хоть и пустым).
Выходит, что OKManager содержит пустые методы, которые используются в VKManager и наоборот.

Как это выглядит на AS:
Код AS3:
if(this.socialType == 'vk')
{
	var socialManager:ISocialManager = new VKManager(); 
}
else if(this.socialType == 'ok')
{
	var socialManager:ISocialManager = new OKManager(); 
}
 
socialManager.someFunction();
В голове есть второй вариант:
Код AS3:
if(this.socialType == 'vk')
{
	var vkManager:VKManager = new VKManager(); 
}
else if(this.socialType == 'ok')
{
	var okManager:OKManager = new OKManager(); 
}
// некое оповещение
function onShareButtonClick():void
{
	if(this.socialType == 'vk')
	{
		// публикация на стену
		vkManager.wallPost();
	}
	else if(this.socialType == 'ok')
	{
		// Публикация в ленту
		okManager.streamPost();
	}
}
Какой метода "красивее"? Как вы решаете эту задачу?
Не делать, ведь, 2 флешки для 2-х соц сетей.
Спасибо.

Старый 10.11.2011, 13:46
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
2 флэшки и интерфейс
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 10.11.2011, 13:46
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 3  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Первый, на мой взгляд, изящнее.
В интерфейсе имеет смысл указывать только общие методы (postMessage, inviteFriends, showPayment). Как они называются в реальной соц сети нам без разницы, это уже в реализации каждого класса будете закладывать.
Но если в какой-то соц сети есть уникальный метод, который необходимо выполнить, то зная что у вас
Код AS3:
if(this.socialType == 'vk')
{
	var socialManager:ISocialManager = new VKManager(); 
}
то создав некий уникальный метод в VKManager вы всегда можете обратиться к нему:
Код AS3:
if(this.socialType == 'vk') // или вообще if (socialManager is VKManager)
{
	VKManager(socialManager).uniqueMethod(); // ну или (socialManager as VKManager).uniqueMethod()
}
__________________
Будь проще.


Последний раз редактировалось KBAC; 10.11.2011 в 13:52. Причина: очепятки
Старый 10.11.2011, 14:35
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 4  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
GBee, то-есть 2 fla файла но разный MainClass? Расскажите по подробнее.
KBAC, спасибо, отличный пример.

Старый 10.11.2011, 15:24
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ага. В принципе.
ИМХО:
Все упирается в "уникальные" возможности соцсети. В ВК больше выбор, сответственно флэшки могут отличаться наличием тех или иных кнопок, вешать все это на призрачную простоту if(socialType="vk") по мне так излишне.

Поэтому должно быть "ядро" программы работающее с интерфейсами (ISocialManager, ISocialFeatures например). Ядро вообще ничего не знает про ВК, ОК, ММ, ФБ. И соцсетевые классы, реализующие эти интерфейсы (VKManager, OKManager).

Разные MainClass, каждый из которых пихает в ядро свой набор классов.
Код AS3:
//VKMainClass
socialManager:ISocialManager = new VKManager();
socialFeatures:ISocialFeatures = new VKFeatures();
Ядро смотрит ISocialFeatures какие фичи доступны и скрывает те или иные кнопки.

Таким образом вы легко прикрутите другие соцсети.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 10.11.2011, 15:54
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 6  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
GBee, но ведь так и получается, только вместо "призрачной простоты if(socialType="vk")" предлагаете использовать разные классы, которые по сути будут выполнять то же самое, ведь всё равно в ядре закладываете весь всевозможный функционал, судя по вашим словам.

В случае с if, прикручивание соц сети будет точно такое же простое (добавляем ещё один else if).
Так что на вкус и цвет) Ну и разные MainClass кому-то могут быть елементарно нагляднее и удобнее, это да.
__________________
Будь проще.

Старый 10.11.2011, 16:10
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 7  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
У меня на каждую сеть по одной паре классов (ConnectorAPI и WallPostSender). Приложение само по себе не заморачивается о том, в какой сети открылось и обращается к функционалу через SocialNetwork.connectorAPI и SocialNetwork.wallPostSender.

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

Кстати, насчет разного функционала сетей - надо гнуть геймдизов на единый интерфейс и единые социальные функции. Основное различие в публикации на стену (ВК) или в ленту новостей (ММ, ОК). Но за счет применения разных текстов вполне можно выкрутиться.

Цитата:
В случае с if, прикручивание соц сети будет точно такое же простое (добавляем ещё один else if).
Так делать не надо, но если хочется именно так, то ставьте по крайней мере switch

Старый 10.11.2011, 16:21
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 8  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Цитата:
Так делать не надо, но если хочется именно так, то ставьте по крайней мере switch
Цитата:
Определение, в какой сети открылись, в самом начале, тогда же производится и установка всех стетевых параметров.
Ну так про определение сети речь и идёт.)

Цитата:
Кстати, насчет разного функционала сетей - надо гнуть геймдизов на единый интерфейс и единые социальные функции.
Это самый верный подход))
__________________
Будь проще.

Старый 10.11.2011, 16:35
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 9  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Кстати, насчет разного функционала сетей - надо гнуть геймдизов на единый интерфейс и единые социальные функции.
В идеале да, но если во ВК есть лишняя возможность пропиарить приложение, и ее нет в других сетях, то грех ей не пользоваться. Кроме того у каждой соцсети все равно свои специфические ограничения. Например мы не стали заморачиваться с монетизацией прилады в ОК, уж очень буе, а в ВК стали, а в ММ не знаю.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 10.11.2011, 16:36
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 10  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
Ну так про определение сети речь и идёт.)
Я использую appID, в клиенте внутри прошит конфиг, в котором перечислены все appID, которые могут в него прийти. У меня на каждую сеть по два приложения (стенд и продакшн, значит всего 6 айдишников).

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

Добавлено через 2 минуты
Цитата:
Например мы не стали заморачиваться с монетизацией прилады в ОК, уж очень буе.
Ну, это наверное в смысле получения потом бабосов?
Потому что с технической точки зрения у меня к ним претензий нет.
Все работает.
Еще бы ММ на мэйлики перешел окончательно и вообще красота.


Цитата:
но если во ВК есть лишняя возможность пропиарить приложение, и ее нет в других сетях, то грех ей не пользоваться
Например?

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.