<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evereskun</id>
	<title>wiki.appsalutecreator.com - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Evereskun"/>
	<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Evereskun"/>
	<updated>2026-10-17T03:42:18Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=3D-object&amp;diff=8691</id>
		<title>3D-object</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=3D-object&amp;diff=8691"/>
		<updated>2017-04-22T06:50:34Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: Новая страница: «{{TOC right}}  '''3D-object''' - встроенный объект редактора, который позволяет использовать трёхмерн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''3D-object''' - встроенный объект редактора, который позволяет использовать трёхмерную модель объекта.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''имя''' (nm) - Имя объекта в дереве проекта. Может быть произвольным&lt;br /&gt;
&lt;br /&gt;
'''синхронизация''' (sync) - нет - нет синхронизации; да - есть синхронизация&lt;br /&gt;
&lt;br /&gt;
'''сохранение параметров''' (sv) - нет=0,только объект=1,объект с подобъектами=2,только подобъекты=3&lt;br /&gt;
&lt;br /&gt;
'''положение''' - положение&lt;br /&gt;
&lt;br /&gt;
*'''x''' (x) - Горизонтальная координата центра объекта (его точки пивота) в пикселях. Отсчитывается от точки пивота сцены.&lt;br /&gt;
*'''y''' (y) - Вертикальная координата центра объекта (его точки пивота) в пикселях. Отсчитывается от точки пивота сцены.&lt;br /&gt;
&lt;br /&gt;
'''размер''' - размер&lt;br /&gt;
*'''w''' (w) - Ширина объекта в пикселях&lt;br /&gt;
*'''h''' (h) - Высота объекта в пикселях&lt;br /&gt;
&lt;br /&gt;
'''модификаторы''' - модификаторы&lt;br /&gt;
*'''alpha''' (al) - Прозрачность: от 0 (прозрачен) до 1 (не прозрачен)&lt;br /&gt;
*'''blending''' (bl) - &amp;quot;Alpha смешивание&amp;quot;  regexp=&amp;quot;parent=0, blend=1, half=2, add=3, sub=4, none=5&lt;br /&gt;
*'''angle x''' (angX) - Угол поворота в градусах оси x&lt;br /&gt;
*'''angle y''' (angY) - Угол поворота в градусах оси y&lt;br /&gt;
*'''angle z''' (angZ) - Угол поворота в градусах оси z&lt;br /&gt;
*'''scale x''' (sx) - Масштаб по оси x (1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.)&lt;br /&gt;
*'''scale y''' (sy) - Масштаб по оси y (1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.)&lt;br /&gt;
*'''scale z''' (sz) - Масштаб по оси z (1 - не изменен, 1.5 - увеличен в полтора раза, и т.д.)&lt;br /&gt;
&lt;br /&gt;
'''z''' (z) - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим&lt;br /&gt;
&lt;br /&gt;
'''память''' (memo) - Если 1, то при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана)&lt;br /&gt;
&lt;br /&gt;
'''res''' (mdl) - Ресурс 3D модели для отображения объекта. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования)&lt;br /&gt;
&lt;br /&gt;
'''курсор''' (curs) - Графический ресурс курсора текущего и всех дочерних объектов&lt;br /&gt;
&lt;br /&gt;
'''прокликиваемая''' (passClk) - Если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то картинка сама обрабатывает клик, но и пропускает его дальше&lt;br /&gt;
&lt;br /&gt;
'''сетка''' (grid) - Если есть, то отображается сетка куба с началом коородинат в точке пивота, и используется для расчета нового значения пивота&lt;br /&gt;
&lt;br /&gt;
'''оси вращения''' - оси вращения&lt;br /&gt;
*'''ось x''' (axX) - 0 - нет вращения вокруг оси; 1 - есть вращение&lt;br /&gt;
*'''ось y''' (ayY) - 0 - нет вращения вокруг оси; 1 - есть вращение&lt;br /&gt;
*'''ось z''' (azZ) - 0 - нет вращения вокруг оси; 1 - есть вращение&lt;br /&gt;
&lt;br /&gt;
'''позиционирование''' - позиционирование&lt;br /&gt;
*'''горизонтальное''' (alHor) - 0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому&lt;br /&gt;
*'''вертикальное''' (alVer) - 0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему&lt;br /&gt;
&lt;br /&gt;
'''группа''' (gr) - Группа, в которую входит текущий объект&lt;br /&gt;
&lt;br /&gt;
== Описание и особенности ==&lt;br /&gt;
&lt;br /&gt;
Оси объекта 3D-object расположены так: ось X - слева на право; ось Y - от экрана к Вам; ось Z - сверху вниз.&lt;br /&gt;
&lt;br /&gt;
Текстура 3D модели должна быть вписана в куб размером 100х100х100 и  '''доведена до степени 2!'''&lt;br /&gt;
&lt;br /&gt;
Чтобы 3D объект отображался во вьювере, после добавление 3D модели в базу ресурсов нужно нажать &amp;quot;update Fids for 3D Models&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
На данный момент 3D объекты можно использовать для объекта isomover&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Absolutist_Framework&amp;diff=8690</id>
		<title>Absolutist Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Absolutist_Framework&amp;diff=8690"/>
		<updated>2017-04-22T06:21:05Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Main objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
'''[[:category:main|Категории]]'''&lt;br /&gt;
== Новости ==&lt;br /&gt;
Вышла новая игра HOG созданная с помощью AppSalute Game Сreator. Созданы новые уникальные эффекты и механики для обеспечения незабываемых впечатлений.&lt;br /&gt;
Описание и видео:&lt;br /&gt;
http://time-gap.com/&lt;br /&gt;
&lt;br /&gt;
== AppSalute Game Сreator ==&lt;br /&gt;
* [[Примеры приложений]]&lt;br /&gt;
* [[Введение в AppSalute Game Сreator]]&lt;br /&gt;
* [[Установка и настройка]]&lt;br /&gt;
* [[Интерфейс ScenceEditor ]]&lt;br /&gt;
* [[Интерфейс ResourceEditor ]]&lt;br /&gt;
* [[Интерфейс TextEditor ]]&lt;br /&gt;
*[[Интерфейс Viewer ]]&lt;br /&gt;
* [[Книга жалоб и пожеланий]]&lt;br /&gt;
* [[Roadmap]]&lt;br /&gt;
&lt;br /&gt;
== Обучение ==&lt;br /&gt;
&lt;br /&gt;
* [[Learning|Уроки по освоению фреймворка]]&lt;br /&gt;
* [[Примеры реализации в играх]]&lt;br /&gt;
* [[Основные понятия объектов физического мира]]&lt;br /&gt;
* [[Использование AppSalute Debugger при отладке]]&lt;br /&gt;
* [[Отладка на флеше]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Подготовка проекта ==&lt;br /&gt;
* [[Проектирование экранов игры]]&lt;br /&gt;
* [[Подготовка и форматы графики]]&lt;br /&gt;
* [[Подготовка и форматы шрифтов]]&lt;br /&gt;
* [[Подготовка и форматы звуков]]&lt;br /&gt;
* [[Подготовка и форматы видео]]&lt;br /&gt;
* [[Создание проекта]]&lt;br /&gt;
* [[Загрузка проекта по частям]]&lt;br /&gt;
* [[Конфигурация проекта для сборки]]&lt;br /&gt;
* [[Подготовка для загрузки на маркеты]]&lt;br /&gt;
* [[Сборка проекта]]&lt;br /&gt;
* [[Частые ошибки]]&lt;br /&gt;
* [[Отличия подготовки проекта для разных платформ]]&lt;br /&gt;
* [[Lua|Использование lua-скриптов]]&lt;br /&gt;
* [[Подготовка версии для Viber]]&lt;br /&gt;
* [[Проверка подгрузки текстур]]&lt;br /&gt;
* [[Экспорт проекта]]&lt;br /&gt;
&lt;br /&gt;
== Встроенные объекты редактора==&lt;br /&gt;
&lt;br /&gt;
=== Common objects  ===&lt;br /&gt;
&lt;br /&gt;
''[[Файл:Screen.png]] - [[Screen]]'' - экран&lt;br /&gt;
&lt;br /&gt;
''[[Файл:Scene.png]] - [[Scene]]'' - сцена&lt;br /&gt;
&lt;br /&gt;
=== Main objects ===&lt;br /&gt;
&lt;br /&gt;
''[[Файл:Objects.png]] - [[Object]]'' - общие параметры для всех игровых объектов&lt;br /&gt;
&lt;br /&gt;
* [[Файл:Kub.png]] - [[Azmanager]] - менеджер активных зон&lt;br /&gt;
* [[Файл:Kub.png]] - [[Active zone]] - активная зона&lt;br /&gt;
* [[Файл:Picture.png]] - [[Image]] - картинка&lt;br /&gt;
* [[Файл:Kub.png]] - [[Statistic]] - объект для отправки событий статистики.&lt;br /&gt;
* [[Файл:Button.png]] - [[Button]] - кнопка&lt;br /&gt;
* [[Файл:Text.png]] - [[Text]] - текст&lt;br /&gt;
* [[Файл:Machine.png]] - [[Machine]] - машина состояний&lt;br /&gt;
** [[Файл:Mwindow.png]] - [[Mwindow]] - машина состояний - окно&lt;br /&gt;
* [[Файл:Tableicon.png]] - [[Table]] - таблица&lt;br /&gt;
* [[Файл:Checkbox.png]] - [[Checkbox]] - чекбокс (кнопка в 2-х состояниях)&lt;br /&gt;
* [[Файл:Checkgroup.png]] - [[Groupbox]] - группа, содержащая несколько чекбоксов&lt;br /&gt;
* [[Файл:Timer.png]] - [[Timer]] - цифровой таймер&lt;br /&gt;
** [[Файл:Kub.png]] - [[Globaltimer]] - таймер &amp;quot;реального времени&amp;quot;&lt;br /&gt;
* [[Файл:Counter2.png]] - [[Counter]] - счетчик сделанных кликов в игре и т.п.&lt;br /&gt;
* [[Файл:Progressbar.png]] - [[Progress]] - прогресс прохождения игры (эчивмент)&lt;br /&gt;
* [[Файл:Particle.png]] - [[Flyer]] - флаер (патиклы)&lt;br /&gt;
* [[Файл:Rectangle.png]] - [[Rectangle]] - прямоугольник&lt;br /&gt;
* [[Файл:Kub.png]] - [[Isomover]] - объект движения в изометрической карте&lt;br /&gt;
* [[Файл:Group.png]] - [[Group]] - группа&lt;br /&gt;
* [[Файл:Groupset.png‎]] - [[Groupset]] - группа&lt;br /&gt;
* [[Файл:Effect.jpg|20px]] - [[Effect]] - Создание различных эффектов&lt;br /&gt;
* [[Файл:Graphprogress.png]] - [[Graphprogress]] - создание мини-карты для отображения прогресса прохождения игры.&lt;br /&gt;
* [[Файл:Statesmanager_ico.png]] - [[Statesmanager]] - очередь работы с объектами&lt;br /&gt;
* [[Файл:Slider icons.png]] - [[Slider]] - объект реализующий листание списка.&lt;br /&gt;
* [[Файл:Ribbon.png]] - [[Ribbon]] - объект отображения графики по сплайну&lt;br /&gt;
* [[Файл:Kub.png]] - [[Animation]] - объект различных анимаций&lt;br /&gt;
* [[Файл:Kub.png]] - [[Magicparticles]] - объект файлов Magic Particles&lt;br /&gt;
* [[Файл:Kub.png]] - [[puzzle3D]] - 3D паззл&lt;br /&gt;
* [[Файл:Kub.png]] - [[3D-object]] - 3D объект&lt;br /&gt;
&lt;br /&gt;
=== Game mechanic ===&lt;br /&gt;
&lt;br /&gt;
* [[Файл:Kub.png]] - [[Avoider]] - эвойдер&lt;br /&gt;
* [[Файл:Puzzle.png]] - [[Puzzle]] - игра пазл&lt;br /&gt;
* [[Файл:Memory.png]] - [[Memory]] - класс игр с memory-механикой&lt;br /&gt;
* [[Файл:Patchwork.png]] - [[Patchwork]] - класс игр с Patchwork-механикой&lt;br /&gt;
* [[Файл:Match3.png]] - [[Match]] - класс match-подобных игр&lt;br /&gt;
* [[Файл:Collaps.png]] - [[Collapse]] - класс match-подобных игр&lt;br /&gt;
* [[Файл:Bejewelled.png]] - [[Bejewelled]] - класс match-подобных игр&lt;br /&gt;
* [[Файл:BubbleShooter.png]] - [[Bubble Shooter]] - класс Bubble игр включая механику Снукер&lt;br /&gt;
* [[Файл:Tapthebubble.png]] - [[TapTheBubble]] - механика игры Tap The Bubble&lt;br /&gt;
* [[Файл:GemSlider.jpg]] - [[Gem Slider]] - механика игры Gem Slider&lt;br /&gt;
* [[Файл:W-57.png]] - [[Words]] - механика игры Words&lt;br /&gt;
* [[Файл:Kub.png]] - [[2048]] - механика игры 2048&lt;br /&gt;
* [[Файл:Kub.png]] - [[Planet]] - игра &amp;quot;Планетки&amp;quot;&lt;br /&gt;
* [[Файл:Kub.png]] - [[Unblock]] - механика игры unblock&lt;br /&gt;
* [[Файл:Matchbattle.png]] - [[Match Battle]] - настройка глобальных параметров для мини-игр&lt;br /&gt;
* [[Файл:Move box.png]] - [[DragBox]] - класс игр с dragbox-механикой&lt;br /&gt;
* [[Файл:Labyrinth.png]] - [[Labyrinth]] - класс игр лабиринт&lt;br /&gt;
* [[Файл:Pipes.png]] - [[Pipes]] - класс игр трубы&lt;br /&gt;
* [[Файл:Search object.png]] - [[HiddenObject]] - поисковый объект в хидден играх&lt;br /&gt;
* [[Файл:Object list.png]] - [[HiddenList]] - список поисковых объектов в хидден играх&lt;br /&gt;
* [[Файл:Hint.png]] - [[HiddenHint]] - подсказка (указатель на спрятанный объект)&lt;br /&gt;
* [[Файл:Kub.png]] - [[HiddenHighLighter]] - позволяет показать не найденные объекты в хиддене.&lt;br /&gt;
* [[Файл:Collection.png]] - [[Collection]] - &amp;quot;коллекция&amp;quot; поисковых объектов для хидден игр&lt;br /&gt;
* [[Файл:Kub.png]] - [[Color Switch]] - механика игры Color Switch&lt;br /&gt;
* [[Файл:Inventory.png]] - [[Inventory]] - &amp;quot;инвентарь&amp;quot; список применяемых объектов для игр&lt;br /&gt;
* [[Файл:Tool.png]] - [[Tool]] - &amp;quot;применение&amp;quot; - объект, который можно применить для игр&lt;br /&gt;
* [[Файл:Kub.png]] - [[Isomap]] - изометрическая карта&lt;br /&gt;
* [[Файл:Slotmachine.png]] - [[Slotmachine]] - объект типа &amp;quot;slot&amp;quot;&lt;br /&gt;
* [[Файл:Economics.png]] - [[Economics]] - глобальная настройка игр типа ферма\билдер&lt;br /&gt;
** [[Файл:E_items.png]] - [[Eitems]] - объект, служащий для связи инвентаря/магазина и экономики &lt;br /&gt;
** [[Файл:E_store_item.png]] - [[Estoreitem]] - шаблон для ячейки магазина &lt;br /&gt;
** [[Файл:E_inventory_item.png]] - [[Einventoryitem]] - шаблон для ячейки инвентаря &lt;br /&gt;
** [[Файл:Kub.png]] - [[Ecraftitem]] - шаблон для ячейки создания предмета.&lt;br /&gt;
** [[Файл:Taskorganizer.png]] - [[Taskorganizer]] - органайзер заданий &lt;br /&gt;
*** [[Файл:Kub.png]] - [[Etasktemplate]] - шаблон задачи для таблицы темплейтов.&lt;br /&gt;
*** [[Файл:Kub.png]] - [[Elogbooktemplate]] - шаблон отображения ячейки логбука.&lt;br /&gt;
** [[Файл:E_task_item.png]] - [[Etaskitem]] - шаблон для ячейки задания&lt;br /&gt;
** [[Файл:E_collection.png]] - [[Ecollection]] - шаблон для строки в таблице коллекции&lt;br /&gt;
* [[Файл:Paint.png‎]] - [[Paint]] - объект для рисования &lt;br /&gt;
* [[Файл:Physicsworld.png]] - [[Physicsworld]] - физический мир Box2D&lt;br /&gt;
** [[Файл:Physicsobject.png]] - [[Physicsobject]] - физические объекты&lt;br /&gt;
** [[Файл:Physics links.png]] - [[Physicsjoint]] - физические соединения&lt;br /&gt;
*  [[Файл:Eraser.png]] - [[Eraser]] - стирачка&lt;br /&gt;
* [[Файл:Kub.png]] - [[trivia]] - игровая механика - миллионер (trivia)&lt;br /&gt;
* [[Файл:Kub.png]] - [[Dailybonus]] - объект для управления механизмом ежедневного бонуса за вход в игру.&lt;br /&gt;
* [[Файл:Kub.png]] - [[Pet]] - объект питомца.&lt;br /&gt;
* [[Файл:Kub.png]] - [[PetCollectionTemplate]] - объект шаблона ячейки с коллекцией.&lt;br /&gt;
* [[Файл:Kub.png]] - [[PetTemplate]] - объект шаблона ячейки с животным.&lt;br /&gt;
* [[Файл:Kub.png]] - [[CakeTower]] - объект шаблона ячейки с животным.&lt;br /&gt;
* [[Файл:Kub.png]] - [[Pentamino]] - механика игры в [https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8%D0%BD%D0%BE пентамино]&lt;br /&gt;
* [[Файл:Kub.png]] - [[TapTheNew]]&lt;br /&gt;
* [[Файл:Kub.png]] - [[Dressing]] - гардероб.&lt;br /&gt;
** [[Файл:Kub.png]] - [[Dressingtemplate]] - объект шаблона гардероба.&lt;br /&gt;
* [[Файл:Kub.png]] - [[solitaire]] - солитер&lt;br /&gt;
&lt;br /&gt;
* [[Файл:digitz.png]] - [[Digitz]] - механика игры Digitz.&lt;br /&gt;
&lt;br /&gt;
=== Global score ===&lt;br /&gt;
* [[Файл:Gamecenter.png]] - [[Gamecenter]] - объект для отправки данных на GameCenter iTunse&lt;br /&gt;
**[[Файл:Kub.png]] - [[Achievementitem]] -  шаблон локального достижения (оффлайн ачивка)&lt;br /&gt;
* [[Файл:Gamecircle.jpg]] - [[Amazon GameCircle]] - объект для отправки данных Amazon GameCircle&lt;br /&gt;
* [[Файл:Google-play-games-android.jpg‎]] - [[Google Play services]] - объект для отправки данных на Google Play services&lt;br /&gt;
* [[Файл:Localtoplist.png]] - [[Localtoplist]] - настройки для отображения результатов прохождения игры&lt;br /&gt;
* [[Файл:Globaltoplist.png]] - [[Globaltoplist]] - настройки для отображения результатов прохождения игры&lt;br /&gt;
* [[Файл:Globaltopsender.png]] - [[Globaltopsender]] - настройки для отображения результатов прохождения игры&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
* [[Файл:Options.png]] - [[Options]] - общие настройки игры&lt;br /&gt;
* [[Файл:Gamedata.png]] - [[Gamedata]] -&lt;br /&gt;
* [[Файл:Controls.png]] - [[Controls]] - обьект для работы с клавишами клавиатуры или девайса &lt;br /&gt;
* [[Файл:Editicon.png]] - [[Edit]] - ввод текста&lt;br /&gt;
* [[Файл:Store.png]] - [[Store]] - настройки InApp покупок в игре&lt;br /&gt;
** [[Файл:Kub.png]] - [[Wallet]] - объект для начисления игровой валюты при InApp покупках через объект economics&lt;br /&gt;
* [[Файл:Notification.png]] - [[Notification]] - push-уведомления&lt;br /&gt;
* [[Файл:Imagepicker.png]] - [[Imagepiker]] - объект для загрузки фото из галереи&lt;br /&gt;
* [[Файл:Video.png]] - [[Video]] - объект для просмотра видео&lt;br /&gt;
* [[Файл:Webview.png]] - [[Webview]] - объект для просмотра интернет страниц в приложении&lt;br /&gt;
* [[Файл:Flurryobject.png]] - [[Flurry]] - настройки системы статистики для приложений https://dev.flurry.com&lt;br /&gt;
* [[Файл:Moregames.png]] - [[MoreGamesList]] - запрос банеров рекламируемых игр&lt;br /&gt;
* [[Файл:Advertisement.png]] - [[Advertisement]] - банерная система flurry, amazon&lt;br /&gt;
* [[Файл:Splitmanager.png]] - [[Splitmanager or A\B Testing]] - менеджер сплитов&lt;br /&gt;
* [[Файл:Tapjoy.png]] - [[Tapjoy]] - система рекламы игр&lt;br /&gt;
* [[Файл:Playhaven.png|24px]] - [[Playhaven]] - система рекламы игр с внутренними up-sale&lt;br /&gt;
* [[Файл:Mobileapptracker.png|24px]] - [[Mobileapptracking]] -&lt;br /&gt;
* [[Файл:Chartboost-logo-new.jpeg]] - [[Chartboost]] -  Chartboost-logo-new.jpeg&lt;br /&gt;
* [[Файл:Kub.png]] - [[SuperSonic]] -  провайдер рекламы SuperSonic&lt;br /&gt;
* [[Файл:Kub.png]] - [[System]] - объект для доступа к системным настройкам&lt;br /&gt;
* [[Файл:Kub.png]] - [[Salesmanager]] - менеджер акций&lt;br /&gt;
* [[Файл:Kub.png]] - [[Cloud]] - объект для синхронизации в облаке&lt;br /&gt;
* [[Файл:Kub.png]] - [[Game]] - объект для отправки событий&lt;br /&gt;
* [[Файл:Kub.png]] - [[Errormanager]] - менеджер ошибок&lt;br /&gt;
&lt;br /&gt;
=== Social ===&lt;br /&gt;
* [[Файл:Facebook.png]] - [[Facebook]] - настройки расшаривания Facebook&lt;br /&gt;
** [[Файл:Esocialfrienditem.png]] - [[Esocialitem]] - Шаблон для ячейки списка друзей&lt;br /&gt;
** [[Файл:Kub.png]] - [[Esocialgiftitem]] - Шаблон для ячейки с предметом, который можно подарить другу&lt;br /&gt;
** [[Файл:Esocial.png]] - [[Esocial]] - объект для взаимодействия с Facebook'ом&lt;br /&gt;
* [[Файл:Twitter.png]] - [[Twitter]] - настройки расшаривания Twitter&lt;br /&gt;
* [[Файл:Odnoklassniki.png]] - [[Odnoklassniki]] - настройки для социальной сети Одноклассники&lt;br /&gt;
* [[Файл:Googleplus.png]] - [[GooglePlus]] - настройки для социальной сети GooglePlus&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
* [[Файл:Forward.png]] - [[SendMail]] - отправка письма через почтовый клиент&lt;br /&gt;
* [[Файл:footer-icon-rate.png]] - [[Rate]] - вызов окна оценки приложения&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;50px&amp;quot; heights=&amp;quot;50px&amp;quot; &amp;gt;&lt;br /&gt;
Изображение:Who.png&lt;br /&gt;
Изображение:AnimalHideSeek.png&lt;br /&gt;
Изображение:travel.png&lt;br /&gt;
Изображение:Game_Adventure_Train.png&lt;br /&gt;
Изображение:Gmae_Match_MoveTheDolly.png&lt;br /&gt;
Изображение:Game_Patchwork_BigEyes.png&lt;br /&gt;
Изображение:Game_Patchwork_Chameleon.png&lt;br /&gt;
Изображение:Game_Patchwork_Logicly.png‎&lt;br /&gt;
Изображение:Game_Patchwork_Stickers.png‎&lt;br /&gt;
Изображение:Elephant.png&lt;br /&gt;
Изображение:Elephant2.png&lt;br /&gt;
Изображение:Cinderella.png&lt;br /&gt;
Изображение:Pigs.png&lt;br /&gt;
Изображение:Bremenskye.png&lt;br /&gt;
Изображение:Book_SnowWhite.png&lt;br /&gt;
Изображение:Book_PussInBoots.png&lt;br /&gt;
Изображение:Call.png&lt;br /&gt;
Изображение:GreatestArtists.png&lt;br /&gt;
Изображение:Game_Puzzle_Kids.png&lt;br /&gt;
Изображение:Game_Puzzle_Architect.png‎&lt;br /&gt;
Изображение:Game_Puzzle_Science.png&lt;br /&gt;
Изображение:Ico_1_114_Full.png&lt;br /&gt;
Изображение:Game_Adventure_Dreams.png&lt;br /&gt;
Изображение:Abc.png&lt;br /&gt;
Изображение:Ico_114_Full.png&lt;br /&gt;
Изображение:Ico_114_Paints.png&lt;br /&gt;
Изображение:Ico_114_Puzzle.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:main]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8654</id>
		<title>Esocial</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8654"/>
		<updated>2017-04-11T14:17:06Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Состояния */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.&lt;br /&gt;
&lt;br /&gt;
=Параметры=&lt;br /&gt;
&lt;br /&gt;
[[Файл:Esocial_full.jpg|right]]&lt;br /&gt;
*'''facebook''' - ссылка на объект [[facebook]], с которым будет работать объект&lt;br /&gt;
*'''esocialfriendsitem''' - ссылка на объект esocialfriendsitem, с которым будет работать объект&lt;br /&gt;
*'''таблица друзей''' - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.&lt;br /&gt;
*'''индикатор активности''' - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).&lt;br /&gt;
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние&lt;br /&gt;
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Инвайт'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Успешный инвайт'''&lt;br /&gt;
**'''Окно''' - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial&lt;br /&gt;
**'''Портрет''' - Объект, в который будет сложена иконка друга, подтянутая с facebook&lt;br /&gt;
**'''Имя''' - Объект, в который будет сложено имя друга, подтянутое с facebook&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Запрос подарка'''&lt;br /&gt;
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:&amp;quot;Мне нужны коллекционные предметы:&amp;quot;. После &amp;quot;:&amp;quot; будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.&lt;br /&gt;
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.&lt;br /&gt;
&lt;br /&gt;
*'''Отправка подарка'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения из окна коллекций'''&lt;br /&gt;
**'''окно''' - машина состояния, которая будет показывать окно. Должна иметь состояние open.&lt;br /&gt;
**'''иконка''' - объект, в который будет помещена иконка предмета, который мы хотим подарить другому игроку.&lt;br /&gt;
**'''текст (объект)''' - текстовый объект, в который сложится название предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''описание (объект)''' - текстовый объект, в который сложится описание предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения с двумя списками'''&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem из поля выше.&lt;br /&gt;
**'''esocialgiftitem ''' - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.&lt;br /&gt;
**'''таблица подарков''' - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Изменить состояние объекта при принятии инвайта''' - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.&lt;br /&gt;
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние&lt;br /&gt;
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние&lt;br /&gt;
&lt;br /&gt;
В опции пишутся параметры инвайтов:&lt;br /&gt;
&lt;br /&gt;
*'''esocial%d.max_invite_total''' - всего инвайтов отправлено&lt;br /&gt;
*'''esocial%d.max_invite_this''' - за последнюю отправку&lt;br /&gt;
&lt;br /&gt;
вместо %d - айдишник объекта&lt;br /&gt;
&lt;br /&gt;
Можно проверять в &amp;quot;nst_invite_sent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0. '''ready'''                       -  состояние готовности&lt;br /&gt;
*1. '''friends'''&lt;br /&gt;
*2. '''friends_debug'''               -  добавляем фейковых друзей&lt;br /&gt;
*3. '''friends_inst'''                -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*4. '''friends_not_inst'''            -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*5. '''report'''                      -  заслать полезную информацию (32бита)&lt;br /&gt;
*6. '''invite'''                      -  показать окно инвайта&lt;br /&gt;
*7. '''cancel'''                      -  отменить весь стек задач&lt;br /&gt;
*8. '''retry'''                       -  повторить текущую задачу&lt;br /&gt;
*9. '''continue_fb'''                 -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*10. '''continue_google'''             -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*11. '''next_inv'''                    -  следующее окошко успешного инвайта&lt;br /&gt;
*12. '''gift'''                        -  показать окно посылки подарка из окна коллекций&lt;br /&gt;
*13. '''gift_confirm'''                -  в окне посылки гифта из окна коллекций нажали кнопку ок&lt;br /&gt;
*14. '''wish'''                        -  запостить на стену &amp;quot;попрошайку&amp;quot;      &lt;br /&gt;
*15. '''check_requests'''              -  проверить реквесты от других пользователей&lt;br /&gt;
*16. '''next_gift'''                   -  следующее окошко про полученный подарок17.&lt;br /&gt;
*17. '''refresh_gifts'''               -  актуализировать содержимое таблицы гифтов&lt;br /&gt;
*18. '''refresh_vip_gifts'''           -  актуализировать содержимое таблицы гифтов используя исключительно вип подарки&lt;br /&gt;
*19. '''gift_send'''                   -  послать подарок из окна с двумя таблицами&lt;br /&gt;
*20. '''logout'''                      -  разлогиниться из фейсбука удалив всю информацию о друзьях&lt;br /&gt;
*21. '''clear_gifts'''                 -  сбросить ограничения на число подарков&lt;br /&gt;
*22. '''wish_table'''                  -  добавить пожелание в таблицу пожеланий&lt;br /&gt;
*23. '''wish_all'''                    -  пожелать все содержимое таблицы в фейсбук         //Теперь только в фейсбук, а для гугла состояние ниже&lt;br /&gt;
*24. '''remove_gift'''                 -  убрать подарок из таблицы&lt;br /&gt;
*25. '''gift_fb'''                     -  подарить текущий подарок через фейбук используя нативный интерфейс фейсбука (т.е. так как сейчас работает гугл, без таблицы друзей)&lt;br /&gt;
*26. '''gift_info'''                   -  Обновить информацию о текущих подарках в специальном окне&lt;br /&gt;
*27. '''gift_lb'''                     -  Показать окно подарка из лидерборда&lt;br /&gt;
*28. '''gift_send_lb'''                -  Подтвердить отсылку подарка из лидерборда&lt;br /&gt;
*29. '''gift_receive'''                -  Получить подарок из окна получения подарков&lt;br /&gt;
*30. '''invite_lb'''                   -  Послать приглашение другу из лидербордов&lt;br /&gt;
*31. '''get_me_google'''               -  запросить информацию о себе с гугла&lt;br /&gt;
*32. '''friends_inst_google'''         -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*33. '''friends_not_inst_google'''     -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*34. '''message_friend'''              -  послать другу уведомление&lt;br /&gt;
*35. '''friends_random'''              -  заполнить таблицу случайных друзей&lt;br /&gt;
*36. '''wish_all_google'''             -  пожелать все содержимое таблицы в гугл&lt;br /&gt;
*37. '''get_me_fb'''                   -  запросить информацию о себе с фейсбука&lt;br /&gt;
*38. '''check_requests_fb'''           -  проверить реквесты от других пользователей для fb&lt;br /&gt;
*39. '''check_requests_google'''       -  проверить реквесты от других пользователей для гугл&lt;br /&gt;
*40. '''logout_google'''               -  разлогиниться из гугла, удалив всю информацию о друзьях&lt;br /&gt;
*41. '''gift_parse'''                  -  Показать окно подарка из парсовой таблицы друзей&lt;br /&gt;
*42. '''gift_send_parse'''             -  Подтвердить отсылку подарка из парсовой таблицы друзей&lt;br /&gt;
*43. '''gift_parse_energy'''           -  Показать окно подарка энергии из парсовой таблицы друзей&lt;br /&gt;
*44. '''gift_parse_vip'''              -  Подарок вип-подарка из окна лидербордов&lt;br /&gt;
*45. '''gift_parse_res1'''             -  Подарок монет из окна лидербордов&lt;br /&gt;
*46. '''gift_receive_no_delete'''      -  Получить подарок из окна получения подарков без запроса&lt;br /&gt;
*47. '''gift_reply_energy'''           -  Послать в ответ энергию.&lt;br /&gt;
*48. '''gift_reply_more'''             -  Промотать таблицу подарков в клауде на нужного юзера&lt;br /&gt;
*49. '''gift_reply_res1'''             -  Послать в ответ ресурс1.&lt;br /&gt;
*50. '''gift_reply_universal'''        -  ответить тем же, что прислали&lt;br /&gt;
*51. '''gift_reply_vip'''              -  Послать в ответ vip.&lt;br /&gt;
*52. '''invite_parse'''                -  Послать приглашение другу из парса (но из общей таблицы, не из лидербордов)&lt;br /&gt;
*53. '''gift_parse_res1_multiple'''    -  отправить множественный подарок в виде монет&lt;br /&gt;
*54. '''gift_parse_item_multiple'''    -  отправить множественный подарок в виде предмета, взяв его из поля gift_param&lt;br /&gt;
*55. '''post_story'''                  -  фоновое сообщение&lt;br /&gt;
*56. '''external_like'''               -  &amp;quot;внешнее&amp;quot; окошко лайка&lt;br /&gt;
*57. '''clear_timeouts'''              -  обнулить таймауты для некоторых тасков&lt;br /&gt;
*58. '''refresh_inv_gifts'''           -  актуализировать содержимое таблицы инвентарных гифтов&lt;br /&gt;
*59. '''wish_inv_add'''                -  добавить предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*60. '''wish_inv_remove'''             -  убрать предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*61. '''gift_parse_refresh'''           -  Обновить информацию о подарке в соотв. иконках и каунтерах&lt;br /&gt;
*62. '''check_requests_abs'''           - проверить реквесты от других пользователей, но только parse&lt;br /&gt;
*63. '''invite_random'''               - показать окно инвайта для случайных друзей&lt;br /&gt;
&lt;br /&gt;
=Debug=&lt;br /&gt;
Для того, что бы отслеживать работу объекта Facebook в папке Documents создаются три файла, которые хранят в себе все знания относительно друзей данного пользователя, их коллекций и уровня:&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_e.xml''' - создается во время отправки приглашения и при вызове состояния ''invite''&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_s.xml''' - создается после фидбэка от Facebook'a.&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug.xml''' - создается исключительно в дебажной версии во время отправки объекту Facebook состояния ''friends'' или ''friends_inst''&lt;br /&gt;
Выглядит этот файл приблизительно вот так:&lt;br /&gt;
[[Файл:17-03-2014 11-09-06.png|right]]&lt;br /&gt;
Поля:&amp;lt;br&amp;gt; '''request''' означает отправлен ли запрос. &amp;lt;br&amp;gt;'''invite''' - принял ли запрос и поле &amp;lt;br&amp;gt; '''inst'''(возможна ошибка в названии) - установлено ли приложение у данного друга.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Задачи (команды) и ошибки=&lt;br /&gt;
&lt;br /&gt;
В опции пишется номер успешной задачи, неуспешной и номер ошибки&lt;br /&gt;
*'''esocial%d.compl_task''' - поле в опциях, куда запишется номер успешно выполненной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_task''' - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_code''' - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.&lt;br /&gt;
&lt;br /&gt;
==Задачи==&lt;br /&gt;
&lt;br /&gt;
При выполнении состояния Esocial пишет в лог следующее:&lt;br /&gt;
&lt;br /&gt;
''onComplete state = %d task = %d,''&lt;br /&gt;
&lt;br /&gt;
где номер таска берется из следующего списка (состояния Facebook):&lt;br /&gt;
&lt;br /&gt;
*0 - провести авторизацию&lt;br /&gt;
*1 - закрыть текущую авторизованную сессию&lt;br /&gt;
*2 - создать диалог для отправки на стену&lt;br /&gt;
*3 - возвращает данные обо мне&lt;br /&gt;
*4 - возвращает данные о друзьях&lt;br /&gt;
*5 - возвращает данные о друзьях, которых можно пригласить в игру&lt;br /&gt;
*6 - получить список игровых сообщений&lt;br /&gt;
*7 - получить список групп пользователя&lt;br /&gt;
*8 - лайкал пользователь приложение или нет&lt;br /&gt;
*9 - обновить мои очки на facebook сервере&lt;br /&gt;
*10 - отправить игровое сообщение&lt;br /&gt;
*11 - удалить игровое сообщение на facebook сервере&lt;br /&gt;
*12 - отправить фоновое сообщение в ленту пользователя&lt;br /&gt;
&lt;br /&gt;
След. сост. выполняются автоматически, если необходимо:&lt;br /&gt;
*13 - (ST_AUTO_CHECK_USER_PERMISSIONS) -   получить список прав которые пользователь предоставил преложению&lt;br /&gt;
*14 - (ST_AUTO_CHECK_APP_PERMISSIONS) -  получить список прав которые facebook предоставил преложению&lt;br /&gt;
*15 - (ST_AUTO_GET_WRITE_PERMISSIONS) -  запросить у пользователя права на запись&lt;br /&gt;
*16 - (ST_AUTO_GET_READ_PERMISSIONS) -  запросить у пользователя права на чтение&lt;br /&gt;
*17 - (ST_AUTO_POST_APP_REQUEST) -  отправить application request пользователю&lt;br /&gt;
*18 - (ST_AUTO_CHECK_USER_ACHIEVEMENTS) -  проверить текущие ачивки пользователя&lt;br /&gt;
&lt;br /&gt;
==Ошибки==&lt;br /&gt;
Если ошибка на гугловом устройстве, то к коду добавляется 1000, к примеру ошибка с кодом 9 на гугле будет 1009.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0 - неизвестная ошибка&lt;br /&gt;
*1 - неизвестная задача&lt;br /&gt;
*2 - facebook не поддерживается&lt;br /&gt;
*3 - нет интернета&lt;br /&gt;
*4 - превышен лимит ожидания запроса&lt;br /&gt;
*5 - не указаны параметры для выполнения задачи&lt;br /&gt;
*6 - отмена диалогового окна пользователем&lt;br /&gt;
*7 - ошибка логина&lt;br /&gt;
*8 - ошибка авторизации&lt;br /&gt;
*9 - ошибка прав доступа&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
*подали запрос выполнить задачу (например ST_GET_FRIENDS)&lt;br /&gt;
*сначала проверяем есть ли права у приложения facebook (ST_AUTO_CHECK_APP_PERMISSIONS)&lt;br /&gt;
*потом проверяем есть ли права от пользователя (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если пользователь не давал прав, то просим (ST_AUTO_GET_READ_PERMISSIONS)&lt;br /&gt;
*потом снова проверяем дал ли нам пользователь права (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если весь цикл прошел успешно, то возвращаемся к поставленной задаче (ST_GET_FRIENDS)&lt;br /&gt;
&lt;br /&gt;
'''ВАЖНО:'''&lt;br /&gt;
Если в любом месте произошел сбой, то ты НЕ увидишь конкретное состояние, ты увидишь только что &amp;quot;ST_GET_FRIENDS&amp;quot; отработал с ошибкой &amp;quot;9&amp;quot; или словами &amp;quot;ERR_PERMISSION&amp;quot;. Других логик или кодов там нет.&lt;br /&gt;
&lt;br /&gt;
==Слушатели заполнения таблиц==&lt;br /&gt;
Чтобы узнать когда окончательно заполниться таблица, нужно подвязать слушателя в нужном месте:&lt;br /&gt;
*Таблица лидеров: &lt;br /&gt;
**'''Cloud.table ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены лидерборды'''; &lt;br /&gt;
*Друзья и подарки: &lt;br /&gt;
**'''Cloud.table_fr ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены друзья''';&lt;br /&gt;
*Неиграющие друзья:&lt;br /&gt;
** '''Esocial.friendsnotinst ''' - машинка-слушатель успеха объекта 'Esocial 'состояние '''5''' (изменить состояние объекта - успех задачи)&lt;br /&gt;
*Окно приёма подарка ( заполненность таблицы проверям у объекта &amp;quot;esocial&amp;quot; параметры &amp;quot;new_gifts&amp;quot; и &amp;quot;all_gifts&amp;quot;): &lt;br /&gt;
**'''Esocial.giftreceivetable ''' - машинка-слушатель объекта 'Esocial' (изменить состояние объекта - '''заполнена таблица с подарками''')&lt;br /&gt;
&lt;br /&gt;
[[Category:Facebook]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8598</id>
		<title>Esocial</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8598"/>
		<updated>2017-03-10T15:38:30Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.&lt;br /&gt;
&lt;br /&gt;
=Параметры=&lt;br /&gt;
&lt;br /&gt;
[[Файл:Esocial_full.jpg|right]]&lt;br /&gt;
*'''facebook''' - ссылка на объект [[facebook]], с которым будет работать объект&lt;br /&gt;
*'''esocialfriendsitem''' - ссылка на объект esocialfriendsitem, с которым будет работать объект&lt;br /&gt;
*'''таблица друзей''' - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.&lt;br /&gt;
*'''индикатор активности''' - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).&lt;br /&gt;
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние&lt;br /&gt;
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Инвайт'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Успешный инвайт'''&lt;br /&gt;
**'''Окно''' - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial&lt;br /&gt;
**'''Портрет''' - Объект, в который будет сложена иконка друга, подтянутая с facebook&lt;br /&gt;
**'''Имя''' - Объект, в который будет сложено имя друга, подтянутое с facebook&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Запрос подарка'''&lt;br /&gt;
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:&amp;quot;Мне нужны коллекционные предметы:&amp;quot;. После &amp;quot;:&amp;quot; будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.&lt;br /&gt;
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.&lt;br /&gt;
&lt;br /&gt;
*'''Отправка подарка'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения из окна коллекций'''&lt;br /&gt;
**'''окно''' - машина состояния, которая будет показывать окно. Должна иметь состояние open.&lt;br /&gt;
**'''иконка''' - объект, в который будет помещена иконка предмета, который мы хотим подарить другому игроку.&lt;br /&gt;
**'''текст (объект)''' - текстовый объект, в который сложится название предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''описание (объект)''' - текстовый объект, в который сложится описание предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения с двумя списками'''&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem из поля выше.&lt;br /&gt;
**'''esocialgiftitem ''' - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.&lt;br /&gt;
**'''таблица подарков''' - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Изменить состояние объекта при принятии инвайта''' - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.&lt;br /&gt;
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние&lt;br /&gt;
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние&lt;br /&gt;
&lt;br /&gt;
В опции пишутся параметры инвайтов:&lt;br /&gt;
&lt;br /&gt;
*'''esocial%d.max_invite_total''' - всего инвайтов отправлено&lt;br /&gt;
*'''esocial%d.max_invite_this''' - за последнюю отправку&lt;br /&gt;
&lt;br /&gt;
вместо %d - айдишник объекта&lt;br /&gt;
&lt;br /&gt;
Можно проверять в &amp;quot;nst_invite_sent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0. '''ready'''                       -  состояние готовности&lt;br /&gt;
*1. '''friends'''&lt;br /&gt;
*2. '''friends_debug'''               -  добавляем фейковых друзей&lt;br /&gt;
*3. '''friends_inst'''                -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*4. '''friends_not_inst'''            -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*5. '''report'''                      -  заслать полезную информацию (32бита)&lt;br /&gt;
*6. '''invite'''                      -  показать окно инвайта&lt;br /&gt;
*7. '''cancel'''                      -  отменить весь стек задач&lt;br /&gt;
*8. '''retry'''                       -  повторить текущую задачу&lt;br /&gt;
*9. '''continue_fb'''                 -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*10. '''continue_google'''             -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*11. '''next_inv'''                    -  следующее окошко успешного инвайта&lt;br /&gt;
*12. '''gift'''                        -  показать окно посылки подарка из окна коллекций&lt;br /&gt;
*13. '''gift_confirm'''                -  в окне посылки гифта из окна коллекций нажали кнопку ок&lt;br /&gt;
*14. '''wish'''                        -  запостить на стену &amp;quot;попрошайку&amp;quot;      &lt;br /&gt;
*15. '''check_requests'''              -  проверить реквесты от других пользователей&lt;br /&gt;
*16. '''next_gift'''                   -  следующее окошко про полученный подарок17.&lt;br /&gt;
*17. '''refresh_gifts'''               -  актуализировать содержимое таблицы гифтов&lt;br /&gt;
*18. '''refresh_vip_gifts'''           -  актуализировать содержимое таблицы гифтов используя исключительно вип подарки&lt;br /&gt;
*19. '''gift_send'''                   -  послать подарок из окна с двумя таблицами&lt;br /&gt;
*20. '''logout'''                      -  разлогиниться из фейсбука удалив всю информацию о друзьях&lt;br /&gt;
*21. '''clear_gifts'''                 -  сбросить ограничения на число подарков&lt;br /&gt;
*22. '''wish_table'''                  -  добавить пожелание в таблицу пожеланий&lt;br /&gt;
*23. '''wish_all'''                    -  пожелать все содержимое таблицы в фейсбук         //Теперь только в фейсбук, а для гугла состояние ниже&lt;br /&gt;
*24. '''remove_gift'''                 -  убрать подарок из таблицы&lt;br /&gt;
*25. '''gift_fb'''                     -  подарить текущий подарок через фейбук используя нативный интерфейс фейсбука (т.е. так как сейчас работает гугл, без таблицы друзей)&lt;br /&gt;
*26. '''gift_info'''                   -  Обновить информацию о текущих подарках в специальном окне&lt;br /&gt;
*27. '''gift_lb'''                     -  Показать окно подарка из лидерборда&lt;br /&gt;
*28. '''gift_send_lb'''                -  Подтвердить отсылку подарка из лидерборда&lt;br /&gt;
*29. '''gift_receive'''                -  Получить подарок из окна получения подарков&lt;br /&gt;
*30. '''invite_lb'''                   -  Послать приглашение другу из лидербордов&lt;br /&gt;
*31. '''get_me_google'''               -  запросить информацию о себе с гугла&lt;br /&gt;
*32. '''friends_inst_google'''         -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*33. '''friends_not_inst_google'''     -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*34. '''message_friend'''              -  послать другу уведомление&lt;br /&gt;
*35. '''friends_random'''              -  заполнить таблицу случайных друзей&lt;br /&gt;
*36. '''wish_all_google'''             -  пожелать все содержимое таблицы в гугл&lt;br /&gt;
*37. '''get_me_fb'''                   -  запросить информацию о себе с фейсбука&lt;br /&gt;
*38. '''check_requests_fb'''           -  проверить реквесты от других пользователей для fb&lt;br /&gt;
*39. '''check_requests_google'''       -  проверить реквесты от других пользователей для гугл&lt;br /&gt;
*40. '''logout_google'''               -  разлогиниться из гугла, удалив всю информацию о друзьях&lt;br /&gt;
*41. '''gift_parse'''                  -  Показать окно подарка из парсовой таблицы друзей&lt;br /&gt;
*42. '''gift_send_parse'''             -  Подтвердить отсылку подарка из парсовой таблицы друзей&lt;br /&gt;
*43. '''gift_parse_energy'''           -  Показать окно подарка энергии из парсовой таблицы друзей&lt;br /&gt;
*44. '''gift_parse_vip'''              -  Подарок вип-подарка из окна лидербордов&lt;br /&gt;
*45. '''gift_parse_res1'''             -  Подарок монет из окна лидербордов&lt;br /&gt;
*46. '''gift_receive_no_delete'''      -  Получить подарок из окна получения подарков без запроса&lt;br /&gt;
*47. '''gift_reply_energy'''           -  Послать в ответ энергию.&lt;br /&gt;
*48. '''gift_reply_more'''             -  Промотать таблицу подарков в клауде на нужного юзера&lt;br /&gt;
*49. '''gift_reply_res1'''             -  Послать в ответ ресурс1.&lt;br /&gt;
*50. '''gift_reply_universal'''        -  ответить тем же, что прислали&lt;br /&gt;
*51. '''gift_reply_vip'''              -  Послать в ответ vip.&lt;br /&gt;
*52. '''invite_parse'''                -  Послать приглашение другу из парса (но из общей таблицы, не из лидербордов)&lt;br /&gt;
*53. '''gift_parse_res1_multiple'''    -  отправить множественный подарок в виде монет&lt;br /&gt;
*54. '''gift_parse_item_multiple'''    -  отправить множественный подарок в виде предмета, взяв его из поля gift_param&lt;br /&gt;
*55. '''post_story'''                  -  фоновое сообщение&lt;br /&gt;
*56. '''external_like'''               -  &amp;quot;внешнее&amp;quot; окошко лайка&lt;br /&gt;
*57. '''clear_timeouts'''              -  обнулить таймауты для некоторых тасков&lt;br /&gt;
*58. '''refresh_inv_gifts'''           -  актуализировать содержимое таблицы инвентарных гифтов&lt;br /&gt;
*59. '''wish_inv_add'''                -  добавить предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*60. '''wish_inv_remove'''             -  убрать предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*61. '''gift_parse_refresh'''           -  Обновить информацию о подарке в соотв. иконках и каунтерах&lt;br /&gt;
*    '''check_requests_abs'''           - проверить реквесты от других пользователей, но только parse&lt;br /&gt;
&lt;br /&gt;
=Debug=&lt;br /&gt;
Для того, что бы отслеживать работу объекта Facebook в папке Documents создаются три файла, которые хранят в себе все знания относительно друзей данного пользователя, их коллекций и уровня:&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_e.xml''' - создается во время отправки приглашения и при вызове состояния ''invite''&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_s.xml''' - создается после фидбэка от Facebook'a.&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug.xml''' - создается исключительно в дебажной версии во время отправки объекту Facebook состояния ''friends'' или ''friends_inst''&lt;br /&gt;
Выглядит этот файл приблизительно вот так:&lt;br /&gt;
[[Файл:17-03-2014 11-09-06.png|right]]&lt;br /&gt;
Поля:&amp;lt;br&amp;gt; '''request''' означает отправлен ли запрос. &amp;lt;br&amp;gt;'''invite''' - принял ли запрос и поле &amp;lt;br&amp;gt; '''inst'''(возможна ошибка в названии) - установлено ли приложение у данного друга.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Задачи (команды) и ошибки=&lt;br /&gt;
&lt;br /&gt;
В опции пишется номер успешной задачи, неуспешной и номер ошибки&lt;br /&gt;
*'''esocial%d.compl_task''' - поле в опциях, куда запишется номер успешно выполненной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_task''' - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_code''' - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.&lt;br /&gt;
&lt;br /&gt;
==Задачи==&lt;br /&gt;
&lt;br /&gt;
При выполнении состояния Esocial пишет в лог следующее:&lt;br /&gt;
&lt;br /&gt;
''onComplete state = %d task = %d,''&lt;br /&gt;
&lt;br /&gt;
где номер таска берется из следующего списка (состояния Facebook):&lt;br /&gt;
&lt;br /&gt;
*0 - провести авторизацию&lt;br /&gt;
*1 - закрыть текущую авторизованную сессию&lt;br /&gt;
*2 - создать диалог для отправки на стену&lt;br /&gt;
*3 - возвращает данные обо мне&lt;br /&gt;
*4 - возвращает данные о друзьях&lt;br /&gt;
*5 - возвращает данные о друзьях, которых можно пригласить в игру&lt;br /&gt;
*6 - получить список игровых сообщений&lt;br /&gt;
*7 - получить список групп пользователя&lt;br /&gt;
*8 - лайкал пользователь приложение или нет&lt;br /&gt;
*9 - обновить мои очки на facebook сервере&lt;br /&gt;
*10 - отправить игровое сообщение&lt;br /&gt;
*11 - удалить игровое сообщение на facebook сервере&lt;br /&gt;
*12 - отправить фоновое сообщение в ленту пользователя&lt;br /&gt;
&lt;br /&gt;
След. сост. выполняются автоматически, если необходимо:&lt;br /&gt;
*13 - (ST_AUTO_CHECK_USER_PERMISSIONS) -   получить список прав которые пользователь предоставил преложению&lt;br /&gt;
*14 - (ST_AUTO_CHECK_APP_PERMISSIONS) -  получить список прав которые facebook предоставил преложению&lt;br /&gt;
*15 - (ST_AUTO_GET_WRITE_PERMISSIONS) -  запросить у пользователя права на запись&lt;br /&gt;
*16 - (ST_AUTO_GET_READ_PERMISSIONS) -  запросить у пользователя права на чтение&lt;br /&gt;
*17 - (ST_AUTO_POST_APP_REQUEST) -  отправить application request пользователю&lt;br /&gt;
*18 - (ST_AUTO_CHECK_USER_ACHIEVEMENTS) -  проверить текущие ачивки пользователя&lt;br /&gt;
&lt;br /&gt;
==Ошибки==&lt;br /&gt;
Если ошибка на гугловом устройстве, то к коду добавляется 1000, к примеру ошибка с кодом 9 на гугле будет 1009.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0 - неизвестная ошибка&lt;br /&gt;
*1 - неизвестная задача&lt;br /&gt;
*2 - facebook не поддерживается&lt;br /&gt;
*3 - нет интернета&lt;br /&gt;
*4 - превышен лимит ожидания запроса&lt;br /&gt;
*5 - не указаны параметры для выполнения задачи&lt;br /&gt;
*6 - отмена диалогового окна пользователем&lt;br /&gt;
*7 - ошибка логина&lt;br /&gt;
*8 - ошибка авторизации&lt;br /&gt;
*9 - ошибка прав доступа&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
*подали запрос выполнить задачу (например ST_GET_FRIENDS)&lt;br /&gt;
*сначала проверяем есть ли права у приложения facebook (ST_AUTO_CHECK_APP_PERMISSIONS)&lt;br /&gt;
*потом проверяем есть ли права от пользователя (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если пользователь не давал прав, то просим (ST_AUTO_GET_READ_PERMISSIONS)&lt;br /&gt;
*потом снова проверяем дал ли нам пользователь права (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если весь цикл прошел успешно, то возвращаемся к поставленной задаче (ST_GET_FRIENDS)&lt;br /&gt;
&lt;br /&gt;
'''ВАЖНО:'''&lt;br /&gt;
Если в любом месте произошел сбой, то ты НЕ увидишь конкретное состояние, ты увидишь только что &amp;quot;ST_GET_FRIENDS&amp;quot; отработал с ошибкой &amp;quot;9&amp;quot; или словами &amp;quot;ERR_PERMISSION&amp;quot;. Других логик или кодов там нет.&lt;br /&gt;
&lt;br /&gt;
==Слушатели заполнения таблиц==&lt;br /&gt;
Чтобы узнать когда окончательно заполниться таблица, нужно подвязать слушателя в нужном месте:&lt;br /&gt;
*Таблица лидеров: &lt;br /&gt;
**'''Cloud.table ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены лидерборды'''; &lt;br /&gt;
*Друзья и подарки: &lt;br /&gt;
**'''Cloud.table_fr ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены друзья''';&lt;br /&gt;
*Неиграющие друзья:&lt;br /&gt;
** '''Esocial.friendsnotinst ''' - машинка-слушатель успеха объекта 'Esocial 'состояние '''5''' (изменить состояние объекта - успех задачи)&lt;br /&gt;
*Окно приёма подарка ( заполненность таблицы проверям у объекта &amp;quot;esocial&amp;quot; параметры &amp;quot;new_gifts&amp;quot; и &amp;quot;all_gifts&amp;quot;): &lt;br /&gt;
**'''Esocial.giftreceivetable ''' - машинка-слушатель объекта 'Esocial' (изменить состояние объекта - '''заполнена таблица с подарками''')&lt;br /&gt;
&lt;br /&gt;
[[Category:Facebook]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8597</id>
		<title>Esocial</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Esocial&amp;diff=8597"/>
		<updated>2017-03-10T15:36:43Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Параметры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.&lt;br /&gt;
&lt;br /&gt;
=Параметры=&lt;br /&gt;
&lt;br /&gt;
[[Файл:Esocial_full.jpg|right]]&lt;br /&gt;
*'''facebook''' - ссылка на объект [[facebook]], с которым будет работать объект&lt;br /&gt;
*'''esocialfriendsitem''' - ссылка на объект esocialfriendsitem, с которым будет работать объект&lt;br /&gt;
*'''таблица друзей''' - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.&lt;br /&gt;
*'''индикатор активности''' - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).&lt;br /&gt;
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние&lt;br /&gt;
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Инвайт'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Успешный инвайт'''&lt;br /&gt;
**'''Окно''' - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial&lt;br /&gt;
**'''Портрет''' - Объект, в который будет сложена иконка друга, подтянутая с facebook&lt;br /&gt;
**'''Имя''' - Объект, в который будет сложено имя друга, подтянутое с facebook&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Запрос подарка'''&lt;br /&gt;
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:&amp;quot;Мне нужны коллекционные предметы:&amp;quot;. После &amp;quot;:&amp;quot; будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.&lt;br /&gt;
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.&lt;br /&gt;
&lt;br /&gt;
*'''Отправка подарка'''&lt;br /&gt;
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора&lt;br /&gt;
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения из окна коллекций'''&lt;br /&gt;
**'''окно''' - машина состояния, которая будет показывать окно. Должна иметь состояние open.&lt;br /&gt;
**'''иконка''' - объект, в который будет помещена иконка предмета, который мы хотим подарить другому игроку.&lt;br /&gt;
**'''текст (объект)''' - текстовый объект, в который сложится название предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''описание (объект)''' - текстовый объект, в который сложится описание предмета, который мы хотим подарить другу.&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Окно дарения с двумя списками'''&lt;br /&gt;
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.&lt;br /&gt;
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem из поля выше.&lt;br /&gt;
**'''esocialgiftitem ''' - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.&lt;br /&gt;
**'''таблица подарков''' - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Изменить состояние объекта при принятии инвайта''' - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.&lt;br /&gt;
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние&lt;br /&gt;
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние&lt;br /&gt;
&lt;br /&gt;
В опции пишутся параметры инвайтов:&lt;br /&gt;
esocial%d.max_invite_total - всего инвайтов отправлено&lt;br /&gt;
esocial%d.max_invite_this - за последнюю отправку&lt;br /&gt;
вместо %d - айдишник объекта&lt;br /&gt;
Можно проверять в &amp;quot;nst_invite_sent&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0. '''ready'''                       -  состояние готовности&lt;br /&gt;
*1. '''friends'''&lt;br /&gt;
*2. '''friends_debug'''               -  добавляем фейковых друзей&lt;br /&gt;
*3. '''friends_inst'''                -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*4. '''friends_not_inst'''            -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*5. '''report'''                      -  заслать полезную информацию (32бита)&lt;br /&gt;
*6. '''invite'''                      -  показать окно инвайта&lt;br /&gt;
*7. '''cancel'''                      -  отменить весь стек задач&lt;br /&gt;
*8. '''retry'''                       -  повторить текущую задачу&lt;br /&gt;
*9. '''continue_fb'''                 -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*10. '''continue_google'''             -  пропустить текущую задачу и перейти к следующей&lt;br /&gt;
*11. '''next_inv'''                    -  следующее окошко успешного инвайта&lt;br /&gt;
*12. '''gift'''                        -  показать окно посылки подарка из окна коллекций&lt;br /&gt;
*13. '''gift_confirm'''                -  в окне посылки гифта из окна коллекций нажали кнопку ок&lt;br /&gt;
*14. '''wish'''                        -  запостить на стену &amp;quot;попрошайку&amp;quot;      &lt;br /&gt;
*15. '''check_requests'''              -  проверить реквесты от других пользователей&lt;br /&gt;
*16. '''next_gift'''                   -  следующее окошко про полученный подарок17.&lt;br /&gt;
*17. '''refresh_gifts'''               -  актуализировать содержимое таблицы гифтов&lt;br /&gt;
*18. '''refresh_vip_gifts'''           -  актуализировать содержимое таблицы гифтов используя исключительно вип подарки&lt;br /&gt;
*19. '''gift_send'''                   -  послать подарок из окна с двумя таблицами&lt;br /&gt;
*20. '''logout'''                      -  разлогиниться из фейсбука удалив всю информацию о друзьях&lt;br /&gt;
*21. '''clear_gifts'''                 -  сбросить ограничения на число подарков&lt;br /&gt;
*22. '''wish_table'''                  -  добавить пожелание в таблицу пожеланий&lt;br /&gt;
*23. '''wish_all'''                    -  пожелать все содержимое таблицы в фейсбук         //Теперь только в фейсбук, а для гугла состояние ниже&lt;br /&gt;
*24. '''remove_gift'''                 -  убрать подарок из таблицы&lt;br /&gt;
*25. '''gift_fb'''                     -  подарить текущий подарок через фейбук используя нативный интерфейс фейсбука (т.е. так как сейчас работает гугл, без таблицы друзей)&lt;br /&gt;
*26. '''gift_info'''                   -  Обновить информацию о текущих подарках в специальном окне&lt;br /&gt;
*27. '''gift_lb'''                     -  Показать окно подарка из лидерборда&lt;br /&gt;
*28. '''gift_send_lb'''                -  Подтвердить отсылку подарка из лидерборда&lt;br /&gt;
*29. '''gift_receive'''                -  Получить подарок из окна получения подарков&lt;br /&gt;
*30. '''invite_lb'''                   -  Послать приглашение другу из лидербордов&lt;br /&gt;
*31. '''get_me_google'''               -  запросить информацию о себе с гугла&lt;br /&gt;
*32. '''friends_inst_google'''         -  заполнить таблицу друзьями с установленной игрой&lt;br /&gt;
*33. '''friends_not_inst_google'''     -  заполнить таблицу друзьями с неустановленной игрой&lt;br /&gt;
*34. '''message_friend'''              -  послать другу уведомление&lt;br /&gt;
*35. '''friends_random'''              -  заполнить таблицу случайных друзей&lt;br /&gt;
*36. '''wish_all_google'''             -  пожелать все содержимое таблицы в гугл&lt;br /&gt;
*37. '''get_me_fb'''                   -  запросить информацию о себе с фейсбука&lt;br /&gt;
*38. '''check_requests_fb'''           -  проверить реквесты от других пользователей для fb&lt;br /&gt;
*39. '''check_requests_google'''       -  проверить реквесты от других пользователей для гугл&lt;br /&gt;
*40. '''logout_google'''               -  разлогиниться из гугла, удалив всю информацию о друзьях&lt;br /&gt;
*41. '''gift_parse'''                  -  Показать окно подарка из парсовой таблицы друзей&lt;br /&gt;
*42. '''gift_send_parse'''             -  Подтвердить отсылку подарка из парсовой таблицы друзей&lt;br /&gt;
*43. '''gift_parse_energy'''           -  Показать окно подарка энергии из парсовой таблицы друзей&lt;br /&gt;
*44. '''gift_parse_vip'''              -  Подарок вип-подарка из окна лидербордов&lt;br /&gt;
*45. '''gift_parse_res1'''             -  Подарок монет из окна лидербордов&lt;br /&gt;
*46. '''gift_receive_no_delete'''      -  Получить подарок из окна получения подарков без запроса&lt;br /&gt;
*47. '''gift_reply_energy'''           -  Послать в ответ энергию.&lt;br /&gt;
*48. '''gift_reply_more'''             -  Промотать таблицу подарков в клауде на нужного юзера&lt;br /&gt;
*49. '''gift_reply_res1'''             -  Послать в ответ ресурс1.&lt;br /&gt;
*50. '''gift_reply_universal'''        -  ответить тем же, что прислали&lt;br /&gt;
*51. '''gift_reply_vip'''              -  Послать в ответ vip.&lt;br /&gt;
*52. '''invite_parse'''                -  Послать приглашение другу из парса (но из общей таблицы, не из лидербордов)&lt;br /&gt;
*53. '''gift_parse_res1_multiple'''    -  отправить множественный подарок в виде монет&lt;br /&gt;
*54. '''gift_parse_item_multiple'''    -  отправить множественный подарок в виде предмета, взяв его из поля gift_param&lt;br /&gt;
*55. '''post_story'''                  -  фоновое сообщение&lt;br /&gt;
*56. '''external_like'''               -  &amp;quot;внешнее&amp;quot; окошко лайка&lt;br /&gt;
*57. '''clear_timeouts'''              -  обнулить таймауты для некоторых тасков&lt;br /&gt;
*58. '''refresh_inv_gifts'''           -  актуализировать содержимое таблицы инвентарных гифтов&lt;br /&gt;
*59. '''wish_inv_add'''                -  добавить предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*60. '''wish_inv_remove'''             -  убрать предмет из таблицы инвентарных в вишлист&lt;br /&gt;
*61. '''gift_parse_refresh'''           -  Обновить информацию о подарке в соотв. иконках и каунтерах&lt;br /&gt;
*    '''check_requests_abs'''           - проверить реквесты от других пользователей, но только parse&lt;br /&gt;
&lt;br /&gt;
=Debug=&lt;br /&gt;
Для того, что бы отслеживать работу объекта Facebook в папке Documents создаются три файла, которые хранят в себе все знания относительно друзей данного пользователя, их коллекций и уровня:&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_e.xml''' - создается во время отправки приглашения и при вызове состояния ''invite''&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug_s.xml''' - создается после фидбэка от Facebook'a.&lt;br /&gt;
&amp;lt;br&amp;gt;- '''facebook_debug.xml''' - создается исключительно в дебажной версии во время отправки объекту Facebook состояния ''friends'' или ''friends_inst''&lt;br /&gt;
Выглядит этот файл приблизительно вот так:&lt;br /&gt;
[[Файл:17-03-2014 11-09-06.png|right]]&lt;br /&gt;
Поля:&amp;lt;br&amp;gt; '''request''' означает отправлен ли запрос. &amp;lt;br&amp;gt;'''invite''' - принял ли запрос и поле &amp;lt;br&amp;gt; '''inst'''(возможна ошибка в названии) - установлено ли приложение у данного друга.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Задачи (команды) и ошибки=&lt;br /&gt;
&lt;br /&gt;
В опции пишется номер успешной задачи, неуспешной и номер ошибки&lt;br /&gt;
*'''esocial%d.compl_task''' - поле в опциях, куда запишется номер успешно выполненной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_task''' - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.&lt;br /&gt;
*'''esocial%d.err_code''' - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.&lt;br /&gt;
&lt;br /&gt;
==Задачи==&lt;br /&gt;
&lt;br /&gt;
При выполнении состояния Esocial пишет в лог следующее:&lt;br /&gt;
&lt;br /&gt;
''onComplete state = %d task = %d,''&lt;br /&gt;
&lt;br /&gt;
где номер таска берется из следующего списка (состояния Facebook):&lt;br /&gt;
&lt;br /&gt;
*0 - провести авторизацию&lt;br /&gt;
*1 - закрыть текущую авторизованную сессию&lt;br /&gt;
*2 - создать диалог для отправки на стену&lt;br /&gt;
*3 - возвращает данные обо мне&lt;br /&gt;
*4 - возвращает данные о друзьях&lt;br /&gt;
*5 - возвращает данные о друзьях, которых можно пригласить в игру&lt;br /&gt;
*6 - получить список игровых сообщений&lt;br /&gt;
*7 - получить список групп пользователя&lt;br /&gt;
*8 - лайкал пользователь приложение или нет&lt;br /&gt;
*9 - обновить мои очки на facebook сервере&lt;br /&gt;
*10 - отправить игровое сообщение&lt;br /&gt;
*11 - удалить игровое сообщение на facebook сервере&lt;br /&gt;
*12 - отправить фоновое сообщение в ленту пользователя&lt;br /&gt;
&lt;br /&gt;
След. сост. выполняются автоматически, если необходимо:&lt;br /&gt;
*13 - (ST_AUTO_CHECK_USER_PERMISSIONS) -   получить список прав которые пользователь предоставил преложению&lt;br /&gt;
*14 - (ST_AUTO_CHECK_APP_PERMISSIONS) -  получить список прав которые facebook предоставил преложению&lt;br /&gt;
*15 - (ST_AUTO_GET_WRITE_PERMISSIONS) -  запросить у пользователя права на запись&lt;br /&gt;
*16 - (ST_AUTO_GET_READ_PERMISSIONS) -  запросить у пользователя права на чтение&lt;br /&gt;
*17 - (ST_AUTO_POST_APP_REQUEST) -  отправить application request пользователю&lt;br /&gt;
*18 - (ST_AUTO_CHECK_USER_ACHIEVEMENTS) -  проверить текущие ачивки пользователя&lt;br /&gt;
&lt;br /&gt;
==Ошибки==&lt;br /&gt;
Если ошибка на гугловом устройстве, то к коду добавляется 1000, к примеру ошибка с кодом 9 на гугле будет 1009.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*0 - неизвестная ошибка&lt;br /&gt;
*1 - неизвестная задача&lt;br /&gt;
*2 - facebook не поддерживается&lt;br /&gt;
*3 - нет интернета&lt;br /&gt;
*4 - превышен лимит ожидания запроса&lt;br /&gt;
*5 - не указаны параметры для выполнения задачи&lt;br /&gt;
*6 - отмена диалогового окна пользователем&lt;br /&gt;
*7 - ошибка логина&lt;br /&gt;
*8 - ошибка авторизации&lt;br /&gt;
*9 - ошибка прав доступа&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Пример запроса:'''&lt;br /&gt;
*подали запрос выполнить задачу (например ST_GET_FRIENDS)&lt;br /&gt;
*сначала проверяем есть ли права у приложения facebook (ST_AUTO_CHECK_APP_PERMISSIONS)&lt;br /&gt;
*потом проверяем есть ли права от пользователя (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если пользователь не давал прав, то просим (ST_AUTO_GET_READ_PERMISSIONS)&lt;br /&gt;
*потом снова проверяем дал ли нам пользователь права (ST_AUTO_CHECK_USER_PERMISSIONS)&lt;br /&gt;
*если весь цикл прошел успешно, то возвращаемся к поставленной задаче (ST_GET_FRIENDS)&lt;br /&gt;
&lt;br /&gt;
'''ВАЖНО:'''&lt;br /&gt;
Если в любом месте произошел сбой, то ты НЕ увидишь конкретное состояние, ты увидишь только что &amp;quot;ST_GET_FRIENDS&amp;quot; отработал с ошибкой &amp;quot;9&amp;quot; или словами &amp;quot;ERR_PERMISSION&amp;quot;. Других логик или кодов там нет.&lt;br /&gt;
&lt;br /&gt;
==Слушатели заполнения таблиц==&lt;br /&gt;
Чтобы узнать когда окончательно заполниться таблица, нужно подвязать слушателя в нужном месте:&lt;br /&gt;
*Таблица лидеров: &lt;br /&gt;
**'''Cloud.table ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены лидерборды'''; &lt;br /&gt;
*Друзья и подарки: &lt;br /&gt;
**'''Cloud.table_fr ''' - добавляемое свойство объекту 'Cloud' '''успешно загружены друзья''';&lt;br /&gt;
*Неиграющие друзья:&lt;br /&gt;
** '''Esocial.friendsnotinst ''' - машинка-слушатель успеха объекта 'Esocial 'состояние '''5''' (изменить состояние объекта - успех задачи)&lt;br /&gt;
*Окно приёма подарка ( заполненность таблицы проверям у объекта &amp;quot;esocial&amp;quot; параметры &amp;quot;new_gifts&amp;quot; и &amp;quot;all_gifts&amp;quot;): &lt;br /&gt;
**'''Esocial.giftreceivetable ''' - машинка-слушатель объекта 'Esocial' (изменить состояние объекта - '''заполнена таблица с подарками''')&lt;br /&gt;
&lt;br /&gt;
[[Category:Facebook]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=8560</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=8560"/>
		<updated>2017-01-25T13:06:02Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Параметры и модификаторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''Gamecenter''' используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* cloud major field - поле в опциях, по которому будет выбираться версия сохранения из cloud при конфликте (наибольшее из значений будет приоритетнее)&lt;br /&gt;
* локальная таблица - ссылка на таблицу в которую мы хотим загрузить локальные достижения.&lt;br /&gt;
* локальный темплейт - ссылка на объект типа achievementitem (шаблон локального достижения).&lt;br /&gt;
&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
 '''cloud_check''' - состояние, по которому проверяется, есть ли сохранение в клауде.&lt;br /&gt;
 '''cloud_apply''' - состояние, по которому применяется новое сохранение из клауда (reload).&lt;br /&gt;
 '''cloud_cancel''' - состояние, по которому автоматическая отправка/получение сохранений будет отключена,&lt;br /&gt;
 пока не будет вызвано состояние '''cloud_check'''&lt;br /&gt;
 '''cloud_delete''' - состояние, по которому сохранение в клауде удаляется.&lt;br /&gt;
 '''local''' - состояние, по которому в локальную таблицу подтянутся локальные темплейты (шаблоны достижений)&lt;br /&gt;
 '''next_achievement''' - состояние, для обработки очереди полученных аччивок, при передаче состояния, объект  уменьшает&lt;br /&gt;
 значение achievement_num на единицу и заполняет поля achievement_ico и achievement_txt. Нужно передавать,&lt;br /&gt;
 после того как показали текущую аччивку.&lt;br /&gt;
 '''achievement_position''' - состояние, для получения порядкового номера аччивки в таблице локальных аччивок. Перед&lt;br /&gt;
 передачей, заполняем в поле '''param''' txtID локальной аччивки и забираем порядковый номер из поля '''result'''&lt;br /&gt;
 ( нумерация начин. с нуля). '''!!!''' объект невыдаёт result пока хотя бы раз не отобразится таблица с аччивками &lt;br /&gt;
 (лучше вызывать состояние когда открыта таблица с аччивками).&lt;br /&gt;
'''report_all''' - состояние, по которому при логине отправляются все достижения, полученные ранее.&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки и Достижения ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Все очки, лидер бордеры, ачивки прописываются в обеъкте Gamecenter, каждая ачивка или score добавляется дополнительным параметром.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для каждой ачивки или score нужно прописать ее внутренний id и заполнить поля -  внешние ссылки для различных платформ iOS, Amazon и т.д. Таким образом у нас заранее прописаны все ачивки и очки, и для их отправки мы выбираем их по внутреннему id.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Далее когда у нам нужно отправить какое то достижение мы объекту в параметре achievement передаем внутренний id ачивки которую нужно отправить и передаем состояние achievement. См. скрин ниже. &amp;lt;br/&amp;gt;&lt;br /&gt;
Для того чтоб авивка выполнялась не полностью, а выполнился ее определенный процент, то есть если мы хотим получить ачивку в несколько этапов, перед отправкой мы должны указать процент отправки. По умолчанию стоит 100%.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение в Cloud ===&lt;br /&gt;
&lt;br /&gt;
Для того что бы заработала синхронизация с облаком, нужна авторизация. Все процессы происходят в фоне, за исключением момента после первой успешной авторизации. В этом случае, если в облаке есть какие либо данные, то пользователю должно быть предложено применить или отменить новое сохранение.&lt;br /&gt;
...&lt;br /&gt;
P.S. В данный момент работает только в Google Play Games, т.е. если параметр '''android google''' = 1.&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''авторизация: изменить состояние объекта''' - При авторизации пользователя перевести объект в новое состояние.&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем.&lt;br /&gt;
*'''состояние''' - овое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ошибка автор: изменить состояние объекта''' - При ошибке авторизации пользователя перевести объект в новое состояние.&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем.&lt;br /&gt;
*'''состояние''' - овое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''Leaderboard - категория''' - Дополнительный параметр для отправки Score&lt;br /&gt;
*'''id достиженя''' &lt;br /&gt;
*'''IOS id достиженя'''&lt;br /&gt;
*'''Amazon id достиженя'''&lt;br /&gt;
*'''IGoogle id достиженя'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''Achievement - достижение''' - Дополнительный параметр для отправки Achievement&lt;br /&gt;
*'''id достиженя''' &lt;br /&gt;
*'''IOS id достиженя'''&lt;br /&gt;
*'''Amazon id достиженя'''&lt;br /&gt;
*'''IGoogle id достиженя'''&lt;br /&gt;
*'''локальный текст''' - текст который поместится в локальный шаблон аччивок ( поле word - текст аччивки; icon1 - картинка в темплейт);&lt;br /&gt;
*'''не отображать в маркетах''' - указываем тексты из текстовой базы с названиями платформ ( поле word=&amp;quot;webok&amp;quot;; google, webfb...);&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_OK,              // авторизация прошла успешно&lt;br /&gt;
 4    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 5    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 6    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 7    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 8    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 9    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 10   ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 11   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 12   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 13   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
 14   ST_CLOUD_APPLY,                    // применить новые опции из клауда&lt;br /&gt;
 15   ST_CLOUD_CANCEL,                   // отказаться от новых опций&lt;br /&gt;
 16   ST_CLOUD_CHECK,                    // проверить сохраненные опции в клауде&lt;br /&gt;
 17   ST_CLOUD_DELETE,                   // удалить опции из клауда&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;br /&gt;
&lt;br /&gt;
Есть возможность проверять из редактора (на компьютере) приходят ли achievements - для этого в файлике Viewer_Log нужно найти строчку:&lt;br /&gt;
 &lt;br /&gt;
 GGameCenter::reportAchievement achievement = %s, percent = %d&lt;br /&gt;
&amp;lt;br&amp;gt;где,&lt;br /&gt;
&amp;lt;br&amp;gt;%s - имя ачивмента (ссылочка которую дают маркетологи)&lt;br /&gt;
&amp;lt;br&amp;gt;%d - число процента&lt;br /&gt;
&lt;br /&gt;
=== Отключение неиспользуемого функционала ===&lt;br /&gt;
&lt;br /&gt;
Если в проекте не используются лидерборды, ачивки, синхронизацию между устройствами, то их можно принудительно отключить вписав в [[app.icf]] или [[platform.icf]] следующие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[GameCenter]&lt;br /&gt;
Achievements=1 &lt;br /&gt;
Leaderboards=1&lt;br /&gt;
Whispersync=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 - используется, 0 - не используется&lt;br /&gt;
&lt;br /&gt;
по умолчанию:&lt;br /&gt;
&lt;br /&gt;
Achievements=1&amp;lt;br&amp;gt;&lt;br /&gt;
Leaderboards=1&amp;lt;br&amp;gt;&lt;br /&gt;
Whispersync=0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.com/gp/help/customer/display.html/?nodeId=200775230 Whispersync]&lt;br /&gt;
&lt;br /&gt;
===Особенности Cloud save===&lt;br /&gt;
&lt;br /&gt;
# У объекта типа геймцентр параметр &amp;quot;память&amp;quot; должен быть равен 1(еденице)&lt;br /&gt;
# минимальное значение ключевого параметра должно быть и быть больше 0(например 1)&lt;br /&gt;
# В облако отправляется файл опций при переходе между экранами, но не раньше чем через 2 минуты. То есть пользователь в облаке имеет файл опций 2-3х-минутной давности.&lt;br /&gt;
# в AndroidManifest.xml(android-extra-application-manifest.xml) долны быть следующие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta-data android:name=&amp;quot;com.google.android.gms.games.APP_ID&amp;quot; android:value= &amp;quot;@string/app_id&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta-data android:name=&amp;quot;com.google.android.gms.appstate.APP_ID&amp;quot; android:value= &amp;quot;@string/app_id&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и естественно должен быть указан id приложения для геймцентра&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройки геймцентра для Google ===&lt;br /&gt;
&lt;br /&gt;
в файле ids.xml долен быть указан id приложения&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;string name=&amp;quot;app_id&amp;quot;&amp;gt;id_приложения_google_для_геймцентра&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;string name=&amp;quot;facebook_app_id&amp;quot;&amp;gt;id_приложения_для_facebook(для работы только геймцентра указывать необязательно, но строка должна присутствовать)&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример использования Cloud save===&lt;br /&gt;
&lt;br /&gt;
На одном экране пусть будет объект типа &amp;quot;геймцентр&amp;quot;, объект типа &amp;quot;options&amp;quot;, обработчики сообщений, кнопки авторизации, перехода на другой экран, проверки новых данных, применения пришедших изменений.&lt;br /&gt;
&lt;br /&gt;
На другом  - счётчик, который будет записывать значение в ключевое поле. На экране с счётчиком кнопка, которая увеличивает его значение, и кнопка возврата на основной экран.&lt;br /&gt;
&lt;br /&gt;
Отправка происходит следующим образом:&lt;br /&gt;
&lt;br /&gt;
# авторизуемся&lt;br /&gt;
# появилось сообщение о том что новых данных нет&lt;br /&gt;
# переходим на 2-й экран&lt;br /&gt;
# увеличиваем счётчик до выбранного значения&lt;br /&gt;
# ждём 2 минуты&lt;br /&gt;
# переходим на главный экран&lt;br /&gt;
# немного ждём&lt;br /&gt;
# закрываем приложение&lt;br /&gt;
# в управлении приложениями удаляем данные приложения (или просто удаляем приложение и устанавливаем снова)&lt;br /&gt;
# запускаем приложение&lt;br /&gt;
# авторизуемся&lt;br /&gt;
# появилось сообщение о том что есть новые данные&lt;br /&gt;
# применяем пришедшие изменения&lt;br /&gt;
# убеждаемся что счётчик показывает правильное значение&lt;br /&gt;
&lt;br /&gt;
Отправка данных в облако происходит после перехода между экранами, но не ранее чем через две минуты после изменений. То есть в облако отправятся, в лучшем случае, настройки 2-х минутной давности. &lt;br /&gt;
&lt;br /&gt;
Проверка новых данных в облаке происходит автоматически сразу после авторизации в объекте типа геймцентр, или при вызове соответствующего состояния.&lt;br /&gt;
&lt;br /&gt;
[https://app.box.com/s/7ekw5b2klih4j1ishsbk Пример проекта] с cloud save&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Получение аччивки ===&lt;br /&gt;
&lt;br /&gt;
Когда мы получаем аччивку (100% прогресс), то в объект gamecentre записываются след. параметры (чтобы моментально открыть окошко, вешаем на все аччивменты дёргание одной машинки):&lt;br /&gt;
:'''achievement_num''' - количество аччивок в очереди. &lt;br /&gt;
:'''achievement_txt''' - локальный текст последней в очереди аччивки;&lt;br /&gt;
:'''achievement_ico''' - иконка последней аччивки.&lt;br /&gt;
&lt;br /&gt;
Имея данные параметры мы заполняем поздравительное окошко с получением аччивки, после показа аччивки , передаём объекту gamecentre сост. '''next_achievement''' , чтобы объект обновил параметры ( если в очереди две аччивки, то объект перезаполнит поля achievement_txt и achievement_ico).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Achieve obtain wnd.jpg]]&lt;br /&gt;
[[Файл:Achieve obtain wnd 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Пост аччивки на Facebook ===&lt;br /&gt;
&lt;br /&gt;
Объект геймцентр отправит пост на стену при получении аччивки, если в соответствующие поле будет указан линк:&lt;br /&gt;
&lt;br /&gt;
[[Файл:6edd4a97ee.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Global score]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=8559</id>
		<title>Gamecenter</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Gamecenter&amp;diff=8559"/>
		<updated>2017-01-25T13:05:06Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Параметры и модификаторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Object|Объект]] '''Gamecenter''' используется для отправки данных на gamecenter. Отправлять можно набранные очки (score) или достижения (achievement).&lt;br /&gt;
&lt;br /&gt;
== Параметры и модификаторы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1.jpg|right]]&lt;br /&gt;
* положение - определяет положение объекта на сцене.&lt;br /&gt;
* размер - определяет размер объекта на сцене.&lt;br /&gt;
* achievement - достижение, которое будем отправлять.&lt;br /&gt;
* achievement percent - на сколько процентов завершено достижение.&lt;br /&gt;
* score - очки, которые мы будем отправлять.&lt;br /&gt;
* score category - категория, в которую мы отправляем очки (ссылка на leaderboard).&lt;br /&gt;
* cloud major field - поле в опциях, по которому будет выбираться версия сохранения из cloud при конфликте (наибольшее из значений будет приоритетнее)&lt;br /&gt;
* локальная таблица - ссылка на таблицу в которую мы хотим загрузить локальные достижения.&lt;br /&gt;
* локальный темплейт - ссылка на объект типа achievementitem (шаблон локального достижения).&lt;br /&gt;
&lt;br /&gt;
* состояние - состояние, которое мы передаем объекту gamecenter&lt;br /&gt;
 '''authenticate''' - состояние, по которому начинается авторизация мобильного &lt;br /&gt;
 устройства на геймцентре.&lt;br /&gt;
 '''score''' - состояние, по которому отправляются очки.&lt;br /&gt;
 '''achievement''' - состояние, по которому отправляются достижения.&lt;br /&gt;
 '''score_show''' - состояние, по которому можно посмотреть очки на геймцентре.&lt;br /&gt;
 '''achievements_show''' - состояние, по которому можно посмотреть достижения.&lt;br /&gt;
 '''cloud_check''' - состояние, по которому проверяется, есть ли сохранение в клауде.&lt;br /&gt;
 '''cloud_apply''' - состояние, по которому применяется новое сохранение из клауда (reload).&lt;br /&gt;
 '''cloud_cancel''' - состояние, по которому автоматическая отправка/получение сохранений будет отключена,&lt;br /&gt;
 пока не будет вызвано состояние '''cloud_check'''&lt;br /&gt;
 '''cloud_delete''' - состояние, по которому сохранение в клауде удаляется.&lt;br /&gt;
 '''local''' - состояние, по которому в локальную таблицу подтянутся локальные темплейты (шаблоны достижений)&lt;br /&gt;
 '''next_achievement''' - состояние, для обработки очереди полученных аччивок, при передаче состояния, объект  уменьшает&lt;br /&gt;
 значение achievement_num на единицу и заполняет поля achievement_ico и achievement_txt. Нужно передавать,&lt;br /&gt;
 после того как показали текущую аччивку.&lt;br /&gt;
 '''achievement_position''' - состояние, для получения порядкового номера аччивки в таблице локальных аччивок. Перед&lt;br /&gt;
 передачей, заполняем в поле '''param''' txtID локальной аччивки и забираем порядковый номер из поля '''result'''&lt;br /&gt;
 ( нумерация начин. с нуля). '''!!!''' объект невыдаёт result пока хотя бы раз не отобразится таблица с аччивками &lt;br /&gt;
 (лучше вызывать состояние когда открыта таблица с аччивками).&lt;br /&gt;
'''report_all''' - состояние, по которому при логине отправляются все достижения, полученные ранее&lt;br /&gt;
&lt;br /&gt;
== Пример применения ==&lt;br /&gt;
&lt;br /&gt;
На геймцентр можно отправлять очки и достижения. Для того, чтобы к объекту gamecenter был доступ, его лучше размещать на глобальном экране. Рассмотрим на примере отправку очков и достижений.&lt;br /&gt;
&lt;br /&gt;
=== Очки и Достижения ===&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы объект gamecenter мог обмениваться данными с геймцентром, он должен сначала авторизироваться. Проводить авторизацию нужно на экране, предшествующему экрану, где нужно отправлять очки. Для этого можно сделать отдельную машину.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Все очки, лидер бордеры, ачивки прописываются в обеъкте Gamecenter, каждая ачивка или score добавляется дополнительным параметром.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc1_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Для каждой ачивки или score нужно прописать ее внутренний id и заполнить поля -  внешние ссылки для различных платформ iOS, Amazon и т.д. Таким образом у нас заранее прописаны все ачивки и очки, и для их отправки мы выбираем их по внутреннему id.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc2_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Далее когда у нам нужно отправить какое то достижение мы объекту в параметре achievement передаем внутренний id ачивки которую нужно отправить и передаем состояние achievement. См. скрин ниже. &amp;lt;br/&amp;gt;&lt;br /&gt;
Для того чтоб авивка выполнялась не полностью, а выполнился ее определенный процент, то есть если мы хотим получить ачивку в несколько этапов, перед отправкой мы должны указать процент отправки. По умолчанию стоит 100%.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Gc3_new.jpg]]&lt;br /&gt;
&lt;br /&gt;
Чтобы посмотреть очки мы передаем объекту gamecenter состояние score_show.&lt;br /&gt;
Для просмотра достижений нужно передать объекту gamecenter состояние achievements_show.&lt;br /&gt;
&lt;br /&gt;
Отличительной особенностью достижений является то, что при успешной авторизации в опции записывается параметр, отвечающий за то или иное достижение. Поэтому эту информацию всегда можно считать из опций и использовать в игре. Выглядит она в опциях как параметр [[Файл:Gc5.jpg]], значение которого = 1.&lt;br /&gt;
&lt;br /&gt;
=== Сохранение в Cloud ===&lt;br /&gt;
&lt;br /&gt;
Для того что бы заработала синхронизация с облаком, нужна авторизация. Все процессы происходят в фоне, за исключением момента после первой успешной авторизации. В этом случае, если в облаке есть какие либо данные, то пользователю должно быть предложено применить или отменить новое сохранение.&lt;br /&gt;
...&lt;br /&gt;
P.S. В данный момент работает только в Google Play Games, т.е. если параметр '''android google''' = 1.&lt;br /&gt;
&lt;br /&gt;
=== Дополнительные параметры ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''авторизация: изменить состояние объекта''' - При авторизации пользователя перевести объект в новое состояние.&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем.&lt;br /&gt;
*'''состояние''' - овое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ошибка автор: изменить состояние объекта''' - При ошибке авторизации пользователя перевести объект в новое состояние.&lt;br /&gt;
*'''объект''' - объект  - состояние которого меняем.&lt;br /&gt;
*'''состояние''' - овое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''Leaderboard - категория''' - Дополнительный параметр для отправки Score&lt;br /&gt;
*'''id достиженя''' &lt;br /&gt;
*'''IOS id достиженя'''&lt;br /&gt;
*'''Amazon id достиженя'''&lt;br /&gt;
*'''IGoogle id достиженя'''&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''Achievement - достижение''' - Дополнительный параметр для отправки Achievement&lt;br /&gt;
*'''id достиженя''' &lt;br /&gt;
*'''IOS id достиженя'''&lt;br /&gt;
*'''Amazon id достиженя'''&lt;br /&gt;
*'''IGoogle id достиженя'''&lt;br /&gt;
*'''локальный текст''' - текст который поместится в локальный шаблон аччивок ( поле word - текст аччивки; icon1 - картинка в темплейт);&lt;br /&gt;
*'''не отображать в маркетах''' - указываем тексты из текстовой базы с названиями платформ ( поле word=&amp;quot;webok&amp;quot;; google, webfb...);&lt;br /&gt;
&lt;br /&gt;
== Примечания и дополнения ==&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы понимать что происходит с объектом gamecenter по логу viewer, приведен ряд значений, которые может получать GGamecenter (state=n, где n - номер состояния):&lt;br /&gt;
&lt;br /&gt;
 n     состояние                          пояснение&lt;br /&gt;
 0    ST_IDLE=0,                         // состояние простоя&lt;br /&gt;
 1    ST_NOT_SUPPORTED,                  // геймцентр не поддерживается на устройстве&lt;br /&gt;
 2    ST_AUTHENTICATE,                   // попытаться авторизоваться&lt;br /&gt;
 3    ST_AUTHENTICATION_OK,              // авторизация прошла успешно&lt;br /&gt;
 4    ST_AUTHENTICATION_ERROR,           // ошибка авторизации&lt;br /&gt;
 5    ST_AUTHENTICATED,                  // успешно авторизовались&lt;br /&gt;
 6    ST_REPORT_ACHIEVEMENT,             // запостить ачивку&lt;br /&gt;
 7    ST_ACHIEVEMENT_SUCCESS,            // ачивка успешно отправлена&lt;br /&gt;
 8    ST_ACHIEVEMENT_FAILED,             // не удалось отправить ачивку&lt;br /&gt;
 9    ST_SHOW_ACHIEVEMENTS,              // показать стандартный гуи с ачивками&lt;br /&gt;
 10   ST_REPORT_SCORE,                   // отправить очки&lt;br /&gt;
 11   ST_SCORE_SUCCESS,                  // очки успешно отправлены&lt;br /&gt;
 12   ST_SCORE_FAILED,                   // не удалось отправить очки&lt;br /&gt;
 13   ST_SHOW_LEADERBOARDS,              // показать стандартный гуи с очками&lt;br /&gt;
 14   ST_CLOUD_APPLY,                    // применить новые опции из клауда&lt;br /&gt;
 15   ST_CLOUD_CANCEL,                   // отказаться от новых опций&lt;br /&gt;
 16   ST_CLOUD_CHECK,                    // проверить сохраненные опции в клауде&lt;br /&gt;
 17   ST_CLOUD_DELETE,                   // удалить опции из клауда&lt;br /&gt;
&lt;br /&gt;
Например, GGameCenter::state old_state = 1, state = 5, &lt;br /&gt;
&amp;lt;br&amp;gt; где:&lt;br /&gt;
&amp;lt;br&amp;gt; old_state - предыдущее состояние, &lt;br /&gt;
&amp;lt;br&amp;gt; state - текущее состояние.&lt;br /&gt;
=== Проверка получения achievement ===&lt;br /&gt;
&lt;br /&gt;
Есть возможность проверять из редактора (на компьютере) приходят ли achievements - для этого в файлике Viewer_Log нужно найти строчку:&lt;br /&gt;
 &lt;br /&gt;
 GGameCenter::reportAchievement achievement = %s, percent = %d&lt;br /&gt;
&amp;lt;br&amp;gt;где,&lt;br /&gt;
&amp;lt;br&amp;gt;%s - имя ачивмента (ссылочка которую дают маркетологи)&lt;br /&gt;
&amp;lt;br&amp;gt;%d - число процента&lt;br /&gt;
&lt;br /&gt;
=== Отключение неиспользуемого функционала ===&lt;br /&gt;
&lt;br /&gt;
Если в проекте не используются лидерборды, ачивки, синхронизацию между устройствами, то их можно принудительно отключить вписав в [[app.icf]] или [[platform.icf]] следующие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[GameCenter]&lt;br /&gt;
Achievements=1 &lt;br /&gt;
Leaderboards=1&lt;br /&gt;
Whispersync=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 - используется, 0 - не используется&lt;br /&gt;
&lt;br /&gt;
по умолчанию:&lt;br /&gt;
&lt;br /&gt;
Achievements=1&amp;lt;br&amp;gt;&lt;br /&gt;
Leaderboards=1&amp;lt;br&amp;gt;&lt;br /&gt;
Whispersync=0&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.com/gp/help/customer/display.html/?nodeId=200775230 Whispersync]&lt;br /&gt;
&lt;br /&gt;
===Особенности Cloud save===&lt;br /&gt;
&lt;br /&gt;
# У объекта типа геймцентр параметр &amp;quot;память&amp;quot; должен быть равен 1(еденице)&lt;br /&gt;
# минимальное значение ключевого параметра должно быть и быть больше 0(например 1)&lt;br /&gt;
# В облако отправляется файл опций при переходе между экранами, но не раньше чем через 2 минуты. То есть пользователь в облаке имеет файл опций 2-3х-минутной давности.&lt;br /&gt;
# в AndroidManifest.xml(android-extra-application-manifest.xml) долны быть следующие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta-data android:name=&amp;quot;com.google.android.gms.games.APP_ID&amp;quot; android:value= &amp;quot;@string/app_id&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;meta-data android:name=&amp;quot;com.google.android.gms.appstate.APP_ID&amp;quot; android:value= &amp;quot;@string/app_id&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и естественно должен быть указан id приложения для геймцентра&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройки геймцентра для Google ===&lt;br /&gt;
&lt;br /&gt;
в файле ids.xml долен быть указан id приложения&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;string name=&amp;quot;app_id&amp;quot;&amp;gt;id_приложения_google_для_геймцентра&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;string name=&amp;quot;facebook_app_id&amp;quot;&amp;gt;id_приложения_для_facebook(для работы только геймцентра указывать необязательно, но строка должна присутствовать)&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример использования Cloud save===&lt;br /&gt;
&lt;br /&gt;
На одном экране пусть будет объект типа &amp;quot;геймцентр&amp;quot;, объект типа &amp;quot;options&amp;quot;, обработчики сообщений, кнопки авторизации, перехода на другой экран, проверки новых данных, применения пришедших изменений.&lt;br /&gt;
&lt;br /&gt;
На другом  - счётчик, который будет записывать значение в ключевое поле. На экране с счётчиком кнопка, которая увеличивает его значение, и кнопка возврата на основной экран.&lt;br /&gt;
&lt;br /&gt;
Отправка происходит следующим образом:&lt;br /&gt;
&lt;br /&gt;
# авторизуемся&lt;br /&gt;
# появилось сообщение о том что новых данных нет&lt;br /&gt;
# переходим на 2-й экран&lt;br /&gt;
# увеличиваем счётчик до выбранного значения&lt;br /&gt;
# ждём 2 минуты&lt;br /&gt;
# переходим на главный экран&lt;br /&gt;
# немного ждём&lt;br /&gt;
# закрываем приложение&lt;br /&gt;
# в управлении приложениями удаляем данные приложения (или просто удаляем приложение и устанавливаем снова)&lt;br /&gt;
# запускаем приложение&lt;br /&gt;
# авторизуемся&lt;br /&gt;
# появилось сообщение о том что есть новые данные&lt;br /&gt;
# применяем пришедшие изменения&lt;br /&gt;
# убеждаемся что счётчик показывает правильное значение&lt;br /&gt;
&lt;br /&gt;
Отправка данных в облако происходит после перехода между экранами, но не ранее чем через две минуты после изменений. То есть в облако отправятся, в лучшем случае, настройки 2-х минутной давности. &lt;br /&gt;
&lt;br /&gt;
Проверка новых данных в облаке происходит автоматически сразу после авторизации в объекте типа геймцентр, или при вызове соответствующего состояния.&lt;br /&gt;
&lt;br /&gt;
[https://app.box.com/s/7ekw5b2klih4j1ishsbk Пример проекта] с cloud save&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Получение аччивки ===&lt;br /&gt;
&lt;br /&gt;
Когда мы получаем аччивку (100% прогресс), то в объект gamecentre записываются след. параметры (чтобы моментально открыть окошко, вешаем на все аччивменты дёргание одной машинки):&lt;br /&gt;
:'''achievement_num''' - количество аччивок в очереди. &lt;br /&gt;
:'''achievement_txt''' - локальный текст последней в очереди аччивки;&lt;br /&gt;
:'''achievement_ico''' - иконка последней аччивки.&lt;br /&gt;
&lt;br /&gt;
Имея данные параметры мы заполняем поздравительное окошко с получением аччивки, после показа аччивки , передаём объекту gamecentre сост. '''next_achievement''' , чтобы объект обновил параметры ( если в очереди две аччивки, то объект перезаполнит поля achievement_txt и achievement_ico).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Achieve obtain wnd.jpg]]&lt;br /&gt;
[[Файл:Achieve obtain wnd 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Пост аччивки на Facebook ===&lt;br /&gt;
&lt;br /&gt;
Объект геймцентр отправит пост на стену при получении аччивки, если в соответствующие поле будет указан линк:&lt;br /&gt;
&lt;br /&gt;
[[Файл:6edd4a97ee.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Global score]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Cloud&amp;diff=8535</id>
		<title>Cloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Cloud&amp;diff=8535"/>
		<updated>2016-12-09T12:39:21Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* parse leaderboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Объект необходим для синхронизации приложения с облаком.&lt;br /&gt;
&lt;br /&gt;
=Параметры объекта Cloud=&lt;br /&gt;
&lt;br /&gt;
==parse general==&lt;br /&gt;
&lt;br /&gt;
*'''app''' - Код приложения из parse&lt;br /&gt;
*'''key''' - Ключ приложения из parse&lt;br /&gt;
*'''имя игры''' - Наше внутреннее имя игры в parse&lt;br /&gt;
*'''имя игрока''' - Имя игрока. Заполнить до любых вызовов состояний&lt;br /&gt;
*'''cloud major field''' - Главное поле в опциях, по которому будет выбираться версия опций в cloud при кофликте (наибольшее из значений будет приоритетнее)&lt;br /&gt;
*'''автоприменение''' - Применять лучшие опции автоматически. Если &amp;quot;нет&amp;quot; то нужно подтверждение пользователя.&lt;br /&gt;
*'''esocial''' - объект типа esocial для получения списка друзей.&lt;br /&gt;
*'''повторять лоад раз''' - количество повторов parse_load при неуспехе, если не отсутствие интернета.&lt;br /&gt;
*'''автолоад''' - автоматически вызывать parse_load при логине в социальной сети.&lt;br /&gt;
&lt;br /&gt;
==parse leaderboards==&lt;br /&gt;
&lt;br /&gt;
*'''лидерборд''' - id таблицы на сервере, в которую будет засылать очки. Начинается с латинской буквы! Не содержит левых символов!&lt;br /&gt;
*'''очки''' - Очки для отправки. Валидное целое число!&lt;br /&gt;
*'''таблица''' - объект-таблица, в который сложим очки. Должна иметь три колонки (место-имя-очки), заполнение по строкам - в случае если не указан &amp;quot;шаблон&amp;quot;.&lt;br /&gt;
*'''шаблон''' - объект типа leaderboardsitem для помещения в таблицу&lt;br /&gt;
*'''свое место''' - каунтер в котором будет место игрока&lt;br /&gt;
*'''свои очки''' - каунтер в котором будут очки игрока&lt;br /&gt;
*'''запрашивать записей''' - сколько записей запросить из таблицы&lt;br /&gt;
*'''специальная сортировка''' ( special_sort ) - специальная сортировка, по лвлу ( задаём &amp;quot;1&amp;quot; когда открываем лидерборды глобальные/ друзей; ставим &amp;quot;0&amp;quot; в лидерах монстров/локаций)&lt;br /&gt;
&lt;br /&gt;
Настройка &lt;br /&gt;
&amp;lt;property name=&amp;quot;анимация смены мест&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; id=&amp;quot;lb_anim&amp;quot; hint=&amp;quot;Анимация смены мест игроком&amp;quot; regexp=&amp;quot;нет=0, да=1&amp;quot;/&amp;gt;&lt;br /&gt;
Работает только с друзьями.&lt;br /&gt;
&lt;br /&gt;
== Добавляемые параметры ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ошибка загрузки данных из cloud: изменить состояние объекта''' - сейчас не применяется, т.к. используем ErrorManager.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''нечего загружать из cloud: изменить состояние объекта''' - обработчик неуспеха ''parse_load'' в случае отсутствия данных на сервере.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''подтверждение применения данных из cloud: изменить состояние объекта'''  - обработчик успеха ''parse_load'' в случае наличия данных на сервере с таким же ''device_id''&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''применены данные из cloud: изменить состояние объекта''' - обработчик успеха ''parse_apply'', желательно перегрузить лайаут.&lt;br /&gt;
*'''объект''' - объект у которого мы меняем состояние.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''подтверждение применения данных из cloud при наличии двух комплектов данных в сети: изменить состояние объекта''' - обработчик успеха ''parse_load'' в случае наличия двух комплектов данных на сервере (например, по facebook_id)&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
[[Файл:+.png]] '''в cloud опции хуже, не применям их: изменить состояние объекта''' - обработчик неуспеха ''parse_load'' в случае, когда данные на сервере хуже, чем на текущем устройстве.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
	&lt;br /&gt;
			&lt;br /&gt;
[[Файл:+.png]] '''голосование загружено: изменить состояние объекта'''&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.			&lt;br /&gt;
&lt;br /&gt;
				&lt;br /&gt;
[[Файл:+.png]] '''успешно проголосовали: изменить состояние объекта'''&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
				&lt;br /&gt;
[[Файл:+.png]] '''запрос в парсе успешно выполнен (любой)''' - обработчик успеха любого запроса.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
				&lt;br /&gt;
[[Файл:+.png]] '''ошибка, нужно обновить приложение''' - обработчик неуспеха ''parse_load'', когда версия текущего приложения ниже, чем версия опциях на сервере.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
				&lt;br /&gt;
[[Файл:+.png]] '''успешно проведен серверный resolve''' - обработчик успеха ''parse_apply_server'', желательно перезагрузить лэйаут.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно проведена изоляция''' - обработчик успеха ''parse_isolate''.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние'''- новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''успешно проведена разизоляция''' - обработчик успеха ''parse_un_isolate''.&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем.&lt;br /&gt;
*'''состояние''' - новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''синхронизируемый параметр между приложениями устройства''' - позволяет синхронизировать конкретный параметр между разными приложениями через parse.&lt;br /&gt;
*'''группа''' - имя группы, общее для различных приложений, которые синхронизируют данный параметр&lt;br /&gt;
*'''параметр''' - имя параметра в группе, общее для различных приложений&lt;br /&gt;
*'''объект''' - объект у которого синхронизируем параметр.&lt;br /&gt;
*'''параметр объекта''' - параметр который синхронизируем.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''невозможно загрузить лидерборды из-за objectId''' - обработчик ошибки загрузки лидербордов, которая происходит при неуспехе parse_load (в этом случае parse_load желательно повторить)&lt;br /&gt;
*'''объект''' - объект, состояние которого меняем,&lt;br /&gt;
*'''состояние''' - состояние - значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
==Особенности использования==&lt;br /&gt;
&lt;br /&gt;
Есть несколько платформ, которые не поддерживают работу с фейсбуком. Это blackberry, win 8.1, windows phone 8.&lt;br /&gt;
При этом эти устройства могут взаимодействовать с клаудом. При этом есть ряд проблем с этими платформами: каждый пользователь будет отправлять свои результаты в лидерборды под ником new_user (или другим дефолтным); не до конца прозрачна ситуация с включением/отключением изоляции игроков.&lt;br /&gt;
Для того, что бы отключить сохранение в клауд для этих платформ нужно установить в опциях флаг disable_cloud_save = 1.&lt;br /&gt;
Опросник при этом работает нормально.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Состояния=&lt;br /&gt;
&lt;br /&gt;
*'''parse_load''' - загружает из облака опции&lt;br /&gt;
*'''parse_save''' - сохраняет опции в клауд. Автоматически сохраняется при переходе с экрана на экран и при выходе из приложения.&lt;br /&gt;
*'''parse_apply''' - применяет загруженные опции при условии совпадения по device_id.&lt;br /&gt;
*'''parse_apply_server''' - выбирает лучшие и применяет опции при условии наличии на сервере двух наборов.&lt;br /&gt;
*'''parse_isolate''' - проводит изоляцию опций (сохраняет 2 набора).&lt;br /&gt;
*'''parse_un_isolate''' - проводит объединение опций.&lt;br /&gt;
*'''parse_leaderboards''' - заполняет таблицу глобальных лидербордов.&lt;br /&gt;
*'''parse_leaderboards_friends''' - заполняет таблицу лидербордов-друзей.&lt;br /&gt;
*'''parse_friends''' - заполняет таблицу парсовых друзей для отправки подарков.&lt;br /&gt;
*'''parse_submit''' - отправляет очки в клауд. Предварительно нужно записать кол-во очков в параметр score.&lt;br /&gt;
*'''parse_get_public_lb''' - показывает информацию о друге из таблицы лидербордов.&lt;br /&gt;
*'''parse_poll''' - загружает опросник.&lt;br /&gt;
*'''parse_vote''' - отправляет голос в опроснике.&lt;br /&gt;
*'''parse_poll_prev''' - загружает результаты предыдущего опросника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Сообщения в лог=&lt;br /&gt;
&lt;br /&gt;
Объект пишет в опции строки:&lt;br /&gt;
I/GCloud GCloud::state() state val = 2 state = 3 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Где val = 2 - это состояние в которое хотим перейти в дальнейшем ( в зависимости от текущего состояния, или сстанет в очередь или выполниться следующим тиком).&lt;br /&gt;
:state = 3 - это состояние в котором сейчас находиться объект;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Номера состояний:==&lt;br /&gt;
&lt;br /&gt;
*'''0  -  ST_LOCAL_DEVICE_SYNCHRONIZATION'''     //!&amp;lt; синхронизация параметров между приложениями одного устройства;&lt;br /&gt;
&lt;br /&gt;
*'''1  -  ST_PARSE_RESOLVE'''                    //!&amp;lt; ресолвим конфликт и ждем подтверждения;&lt;br /&gt;
&lt;br /&gt;
*'''2  -  ST_PARSE_IDLE'''                       //!&amp;lt; состояние простоя, означает, что мы не ждем ответа ни на один запрос;&lt;br /&gt;
&lt;br /&gt;
*'''3  -  ST_PARSE_LOAD'''                       //!&amp;lt; загрузить опции из парса (вызываться должно снаружи, после ввода имени) ;&lt;br /&gt;
&lt;br /&gt;
*'''4  -  ST_PARSE_SAVE'''                       //!&amp;lt; сохранить опции в парс c учетом предохранительной задержки SAVE_DELAY_SEC (на 2014-09-17 вызывается из единственного места - GOptions::save);&lt;br /&gt;
        &lt;br /&gt;
*'''5  -  ST_PARSE_LEADERBOARDS'''               //!&amp;lt; загрузить лидерборды из парса и сложить в соответствующую таблицу;&lt;br /&gt;
&lt;br /&gt;
*'''6  -  ST_PARSE_LEADERBOARDS_FRIENDS'''       //!&amp;lt; загрузить лидерборды из парса и сложить в соответствующую таблицу;&lt;br /&gt;
&lt;br /&gt;
*'''7  -  ST_PARSE_SUBMIT'''                     //!&amp;lt; заслать очки в парс взяв очки из поля score и уровень из поля level;&lt;br /&gt;
&lt;br /&gt;
*'''8  -  ST_PARSE_APPLY'''                      //!&amp;lt; применить скачанные опции;&lt;br /&gt;
&lt;br /&gt;
*'''9  -  ST_GET_PUBLIC_LB'''                    //!&amp;lt; скопировать паблик данные кликнутого юзера из лидербордов в доступную область;&lt;br /&gt;
&lt;br /&gt;
*'''10 -  ST_PARSE_POLL'''                       //!&amp;lt; получить данные о текущем опроснике от клауда. Заполнить таблицу ответов;&lt;br /&gt;
&lt;br /&gt;
*'''11 -  ST_PARSE_POLL_PREV'''                  //!&amp;lt; получить данные о предыдущем опроснике от клауда. Заполнить таблицу ответов №2;&lt;br /&gt;
&lt;br /&gt;
*'''12 -  ST_PARSE_VOTE'''                       //!&amp;lt; проголосовать в текущем опроснике (номер ответа возьмем из таблицы) TODO - не нужно ли состояний против и за?;&lt;br /&gt;
&lt;br /&gt;
*'''13 -  ST_PARSE_SHARE_POLL'''                 //!&amp;lt; зашарить результаты текущего опроса;&lt;br /&gt;
&lt;br /&gt;
*'''14 -  ST_PARSE_FORCED_SAVE'''                //!&amp;lt; сохранить опции в парс незамедлительно (на 2014-09-17 вызывается из единственного места - GOptions::save);&lt;br /&gt;
&lt;br /&gt;
*'''15 -  ST_PARSE_APPLY_SERVER'''               //!&amp;lt; применить опции и отправить ресолв;&lt;br /&gt;
&lt;br /&gt;
*'''16 -  ST_PARSE_CLEAR_NOTIFICATIONS'''        //!&amp;lt; отписаться от уведомлений;&lt;br /&gt;
&lt;br /&gt;
*'''17 -  ST_PARSE_ADD_NOTIFICATION'''           //!&amp;lt; добавить уведомление (не требует действий с сетью, реальная отправка - по потере фокуса);&lt;br /&gt;
&lt;br /&gt;
*'''18 -  ST_PARSE_TIME'''                       //!&amp;lt; запросить время;&lt;br /&gt;
&lt;br /&gt;
*'''19 -  ST_PARSE_FRIENDS'''                    //!&amp;lt; заполнить таблицу всех друзей (новые подарки);&lt;br /&gt;
   &lt;br /&gt;
*'''20 -  ST_PARSE_ISOLATE'''                    //!&amp;lt; отказаться от слияния аккаунтов;&lt;br /&gt;
&lt;br /&gt;
*'''21 -  ST_PARSE_UN_ISOLATE'''                 //!&amp;lt; отменить изоляцию&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Коды ошибок:==&lt;br /&gt;
&lt;br /&gt;
*'''6''' - опрос закончился;&lt;br /&gt;
*'''7''' - ошибка версионности;&lt;br /&gt;
*'''1000''' - отсутсвие интернета.&lt;br /&gt;
В прочих случаях код ошибки будет '''2000 + номер состояния''', т.е. для лоада, например ошибка будет 2000 + 3 = 2003&lt;br /&gt;
&lt;br /&gt;
Дополнительно клауд будет отправлять коды ошибок по таймауту ( превышению времени ответа - сейчас равен 60 сек):&lt;br /&gt;
'''4000 + номер состояния''', т.е. для запроса лидербордов, например ошибка будет 4000 + 5 = 4005 ( глобальные) или 4000 + 6 = 4006 (друзья)&lt;br /&gt;
&lt;br /&gt;
[[Category:Options|*]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8510</id>
		<title>Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8510"/>
		<updated>2016-11-29T15:54:38Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Перемещение ячеек таблицы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Общие параметры'''&lt;br /&gt;
&lt;br /&gt;
Таблица имеет набор стандартных параметров (см. описание параметров [[Object|Object]]).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tabletext.png]]&lt;br /&gt;
&lt;br /&gt;
Таблица (Тable) является универсальным объектом. Она может использоваться как:&lt;br /&gt;
&lt;br /&gt;
- самостоятельный элемент включая в себя различные элементы ([[Image|Image]], [[Text|Text]], [[Button|Button]], [[Machine|Machine]] и пр.);&lt;br /&gt;
&lt;br /&gt;
- дополнение к таким объектам как [[Patchwork|Patchwork]], [[HiddenList|HiddenList]], [[Invetory|Invetory]] и др. Выступая в роли «поля» для отображения их элементов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table4.png|right]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table5.png]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table6.png]]&lt;br /&gt;
&lt;br /&gt;
Для того чтобы поместить объекты в таблицу, необходимо внести их в группу таблицы в дереве проекта.&lt;br /&gt;
Заполнение таблицы происходит по столбцам. Если в таблице число видимых колонок/строчек меньше общего количества колонок/строчек, то, в таком случае, таблицу можно листать в нужном направлении.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры таблицы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new1.png|300px|right]]&lt;br /&gt;
'''Группа - таблица'''&lt;br /&gt;
&lt;br /&gt;
''(Курсивом в скобках указан id параметра, или состояния)''&lt;br /&gt;
*'''подложка объект''' ''(bgobj)'' - Объект картинка на которой выводится таблица. Задумывалась картинка, которая будет тайлиться до размеров таблицы. В дереве не важно где хранить этот объект.&lt;br /&gt;
*'''колонок''' ''(cols)'' - Максимальное число колонок (ячейки должны поместиться).&lt;br /&gt;
*'''колонок видно''' ''(cShw)'' - Количество колонок, видимых в области вывода таблицы (если включен флаг: ширина фиксированная).&lt;br /&gt;
*'''строчек''' ''(rows)'' - Максимальное число строчек (ячейки должны поместиться).&lt;br /&gt;
*'''строчек видно''' ''(rShw)'' - Количество строчек, видимых в области вывода таблицы (если включен флаг: высота фиксированная).&lt;br /&gt;
*'''скорость листания''' ''(vel)'' - Скорость листания страниц (точек/секунду).&lt;br /&gt;
*'''отсечение''' ''(cut)'' - &amp;quot;ширина и высота&amp;quot; - обрезать графику таблицы по ширине и высоте; &amp;quot;ширина&amp;quot; - обрезать графику таблицы по ширине; &amp;quot;высота&amp;quot; - обрезать графику таблицы по высоте; &amp;quot;нет&amp;quot; - не обрезать.&lt;br /&gt;
*'''добавлять по строкам''' ''(bystr)'' - 1 - добавлять по строкам; 0 - добавлять по столбцам.&lt;br /&gt;
*'''центрировать''' ''(cntr)'' - &amp;quot;нет&amp;quot; - не центрировать (ячейки заполняются начиная от левого края таблицы); &amp;quot;растянуть&amp;quot; - если количество заполненных ячеек меньше видимых, то они равномерно растягиваются по длине таблицы (при этом только увеличивается расстояние между ячейками); &amp;quot;прижать к центру&amp;quot; - если количество заполненных ячеек меньше видимых, то эти ячейки располагаются по центру таблицы (при этом расстояния между ячейками не увеличиваются).&lt;br /&gt;
*'''добавлять только видимые''' - добавлять только видимые объекты таблицы (vis=1)&lt;br /&gt;
&lt;br /&gt;
'''Группа - бордюры таблицы'''&lt;br /&gt;
&lt;br /&gt;
*'''бордюр X''' ''(dx)'' - Ширина бордюра по x (отступ во внутрь слева и справа) от подложки или от ширины объекта для отображения видимых ячеек.&lt;br /&gt;
*'''бордюр Y''' ''(dy)'' - Ширина бордюра по y (отступ во внутрь сверху и снизу) от подложки или от высоты объекта для отображения видимых ячеек.&lt;br /&gt;
*'''отступ X''' ''(dxC)'' - Отступ по x во внутрь (слева и справа) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
*'''отступ Y''' ''(dyC)'' - Отступ по y во внутрь (сверху и снизу) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
&lt;br /&gt;
'''Группа - смещение'''&lt;br /&gt;
&lt;br /&gt;
*'''смещ. X''' - Смещение по x объекта в ячейке.&lt;br /&gt;
*'''смещ. Y''' - Смещение по y объекта в ячейке.&lt;br /&gt;
*'''фон X''' - Смещение по x фона в ячейке.&lt;br /&gt;
*'''фон Y''' - Смещение по y фона в ячейке.&lt;br /&gt;
*'''зачеркивания X''' - Смещение по x ресурса зачеркивания ячейки.&lt;br /&gt;
*'''зачеркивания Y''' - Смещение по y ресурса зачеркивания ячейки.&lt;br /&gt;
&lt;br /&gt;
'''Группа - размеры ячеек'''&lt;br /&gt;
&lt;br /&gt;
*'''фон''' - Графический ресурс фона ячейки. Перетаскивается мышкой из редактора ресурсов. Может отсутствовать.&lt;br /&gt;
*'''ширина фиксированная''' - Если равно 1, то ширины колонок будут фиксированные и определяются полем: колонок видно.&lt;br /&gt;
*'''высота фиксированная''' - Если равно 1, то высоты строчек будут фиксированные и определяются полем: строчек видно.&lt;br /&gt;
*'''сжимать''' - Если равно 1, то будет сжимать картинки без искажения пропорций, чтобы они помещались в ячейке.&lt;br /&gt;
*'''текущая колонка''' - Номер первой видимой колонки, начиная с 0-ля.&lt;br /&gt;
*'''текущая строка''' - Номер первой видимой строки, начиная с 0-ля.&lt;br /&gt;
&lt;br /&gt;
'''Группа - параметры текста'''&lt;br /&gt;
&lt;br /&gt;
*'''текстID''' ''(tTxtID)'' - Текст (id из редактора текста), отображаемый построчно в таблице.&lt;br /&gt;
*'''текст''' ''(tTxt)'' - Cтрока, отображаемая в таблице.&lt;br /&gt;
*'''имя''' ''(fn)'' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' ''(fs)'' - Размер шрифта в поинтах. &lt;br /&gt;
*'''цвет 1''' ''(fc1)'' - Цвет текста обычного вида.&lt;br /&gt;
*'''цвет 2''' ''(fc2)'' - Цвет текста помеченной ячейки.&lt;br /&gt;
*'''alpha2''' ''(al2)'' - Прозрачность картинки в помеченной ячейке.&lt;br /&gt;
*'''поз. гориз.''' ''(cellAlHor)'' - Горизонтальное выравнивание текста (0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому).&lt;br /&gt;
*'''поз. верт.''' ''(cellAlVer)'' - Вертикальное выравнивание текста (0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему).&lt;br /&gt;
*'''цвет зачеркивания 1''' ''(str_c1)'' - Цвет зачеркивания текста обычного вида.&lt;br /&gt;
*'''цвет зачеркивания 2''' ''(str_c2)'' - Цвет зачеркивания текста помеченной ячейки.&lt;br /&gt;
*'''ресурс зачеркивания''' ''(crRes)'' - Графический ресурс зачеркивания ячейки. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''толщина зачеркивания''' ''(str_s)'' - Толщина зачеркивания в пикселях.&lt;br /&gt;
*'''отступ''' ''(skip)'' - Вертикальное расстояние в пикселях в одной ячейке между словами в словосочетании (например в словосочетании Морская звезда, если оно не помещается горизонтально в одну ячейку - это вертикальное расстояние между Морская и звезда).&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры ==&lt;br /&gt;
'''Группа - Управление''' &lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new2 new.PNG|450px|right]]&lt;br /&gt;
&lt;br /&gt;
Когда таблица листаемая, можно отображать индикаторы страниц. У каждого индикатора два состояния: вкл - если соответствующая страница видна на экране и выкл в противоположном случае. Нажав на соответствующий индикатор, таблица перемещается со скоростью, указанной в параметре &amp;quot;скорость листания&amp;quot; &lt;br /&gt;
на необходимую страницу.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор ВКЛ''' - Картинка включенного индикатора.&lt;br /&gt;
*'''индикатор ВЫКЛ''' - Картинка выключенного индикатора.&lt;br /&gt;
*'''левая кнопка''' - Кнопка для листания списка влево.&lt;br /&gt;
*'''правая кнопка''' - Кнопка для листания списка вправо.&lt;br /&gt;
*'''верхняя кнопка'''- Кнопка для листания списка вверх. &lt;br /&gt;
*'''нижняя кнопка''' - Кнопка для листания списка вниз. &lt;br /&gt;
*'''отступ X''' - Отступ по x от таблицы.&lt;br /&gt;
*'''отступ Y''' - Отступ по y от таблицы.&lt;br /&gt;
*'''отступ W''' - Отступ между ячейками таблицы индексов.&lt;br /&gt;
&lt;br /&gt;
'''Группа - листание'''&lt;br /&gt;
&lt;br /&gt;
*'''изинг скорости листания''' ''(scrVelEasing)'' - Изинг скорости листания ([http://easings.net/ru шаблоны])&lt;br /&gt;
*'''макс. скорость листания''' ''(scrMaxSpeed)'' - Максимальная скорость листания при броске&lt;br /&gt;
*'''макс. длинна листания в страницах''' ''(scrMaxPages)'' - Максимальная длинна листания при броске в страницах - максимальное кол-во страниц (элементов?), на которое можно листнуть таблицу за раз&lt;br /&gt;
*'''тип листания''' - Тип листания таблицы: 0 - по страницам; 1 - в зависимости от скорости (IOS).&lt;br /&gt;
*'''листать как книгу''' - да - при нечетном колличестве добавляемых страниц будут добавляться пустые ячейки; нет - листание по колличеству видимых ячеек.&lt;br /&gt;
*'''старт листания''' - Смещение в точках, начиная с которого скролим таблицу.&lt;br /&gt;
*'''гориз. листание''' - Горизонтальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''вертик. листание''' - Вертикальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''цикл. листание''' - Циклическое листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''листание 360 градусов''' - Разрешено листание в двух направлениях: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''затухание''' - Затухание скорости листания таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
&lt;br /&gt;
== Добавляемые параметры ==&lt;br /&gt;
[[Файл:Table2_1.PNG|right]]&lt;br /&gt;
Открывается при нажатии правой кнопки мыши в поле параметров таблицы.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ширина настраиваемая'''&lt;br /&gt;
*'''ширина колонок''' - Через точку с запятой указываем ширину колонок по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''высота настраиваемая'''&lt;br /&gt;
*'''высота строчек''' - Через точку с запятой указываем высоту строчек по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''добавить ячейку в таблицу'''&lt;br /&gt;
*'''текстID''' - Строка (id из редактора строк), отображаемая в ячейке.&lt;br /&gt;
*'''текст''' - Строка, отображаемая в ячейке.&lt;br /&gt;
*'''картинка''' - Картинка, рисуемая в ячейке (строки игнорируются).&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить состояние объекта''' - при тапе&lt;br /&gt;
*'''объект''' - Строка которого мы меняем.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево - изменить состояние объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
== Состояния таблицы ==&lt;br /&gt;
Так же мы можем управлять таблицей изменяя ее состояния.&lt;br /&gt;
&lt;br /&gt;
*'''first''' - Перелистнуть на первую страницу таблицы.&lt;br /&gt;
*'''last''' - Перелистнуть на последнюю страницу таблицы.&lt;br /&gt;
*'''prev''' - Перелистнуть на предыдущую страницу таблицы (влево по горизонтали).&lt;br /&gt;
*'''next''' - Перелистнуть на следующую страницу таблицы (вправо по горизонтали).&lt;br /&gt;
*'''up''' - Перелистнуть на следующую страницу таблицы (вверх по вертикали).&lt;br /&gt;
*'''down''' - Перелистнуть на предыдущую страницу таблицы (вниз по вертикали).&lt;br /&gt;
*'''refresh''' - Обновить таблицу.&lt;br /&gt;
*'''reload''' - перезаполнить таблицу. Необходимо в случае, когда объекты в таблицу добавляются путем установки таблицы в качестве родителя (передаём сразу при смене родителя, после каждой смены родителя).&lt;br /&gt;
*'''flyto''' - Таблица плавно приедет к значению curRow и curCol, если они были изменены.&lt;br /&gt;
*'''maxRow''' - Количество заполненных строк.&lt;br /&gt;
*'''maxCol''' - Количество заполненных колонок.&lt;br /&gt;
*'''curRow''' - Текущая строка.&lt;br /&gt;
*'''curCol''' - Текущая колонка.&lt;br /&gt;
Если изменить таблице значение параметра (текущего рядка или столбика), то после необходимо передать таблице состояние refresh или flyto, чтобы увидеть изменения. При refresh рядок или столбец поменяется мгновенно, при flyto таблица &amp;quot;приплывет&amp;quot; к нужному рядку или столбцу.&lt;br /&gt;
&lt;br /&gt;
== Использование таблицы для анимации ==&lt;br /&gt;
&lt;br /&gt;
=== Использование состояния flyto ===&lt;br /&gt;
&lt;br /&gt;
Иногда нужно получить анимацию выезда (или другого движения) некоторого объекта (окна, рисунка и тд) на экран. Это можно сделать с помощью таблицы. Ниже приведен пример для движения вниз (с постепенным пропаданием объекта из видимости). Делаем следующее: создаем таблицу(ее параметры приведены на рисунке) нужного размера(как минимум, чтобы поместился нужный объект). В нее помещаем 2 объекта: пустой рисунок(при движении он заменит собой движущийся объект) и объект-родитель(image размером 0*0 ), в котором находится объект, который будет двигаться.&lt;br /&gt;
&lt;br /&gt;
'''Важно!''' Для корректного отображения объекта в таблице, нужно:&lt;br /&gt;
* Создать таблицу и разместить ее нужным образом,.&lt;br /&gt;
* Разместить объект родитель посередине движущегося объекта &lt;br /&gt;
* Поместить движущийся объект в родителя&lt;br /&gt;
* Поместить родителя в таблицу&lt;br /&gt;
&lt;br /&gt;
Если нужно подкорректировать положение объекта в таблице, то нужно изменять именно его координаты. Изменение координат родителя не приведет к смещению объекта на экране вьювера.&lt;br /&gt;
&lt;br /&gt;
Для запуска анимации таблице нужно изменить значение текущей строки (столбца, при горизонтальном движении), после чего передать ей состояние &lt;br /&gt;
flyto. Скорость анимации можно настроить изменяя параметр таблицы - скорость листания.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tblanimmove.png|250px|Расположение в дереве проекта]] [[Файл:Animmovestate.png|250px|Машина, запускающая анимацию]] [[Файл:Tableanimmove.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В объекта-родителя можно помещать не только картинки, но и машины(которые могут реализовывать собственное движение, при этом, при попадании за край таблицы, объект постепенно уходит из зоны видимости). Также в родителя можно поместить еще одну анимацию с помощью таблицы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В данном случае нужно движение по вертикали вниз. Для этого таблица имеет следующие параметры: 1 столбец, 2 строки, нелистаемая( тк не нужно взаимодействовать с объектами ). Принцип работы прост ячейка (1,0) заменяется на (0,0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Передвижение предмета под границу окна ===&lt;br /&gt;
&lt;br /&gt;
Такой же эффект можно достичь, если использовать ректангл. Помещаем окно в ректангл и задаем ему параметр отсечение.&lt;br /&gt;
Использование ректангла потребляет меньше ресурсов.&lt;br /&gt;
&lt;br /&gt;
С помощью таблицы можно ограничить зону видимости предмета на экране. При этом, при выходе за эту зону, объект пропадает из видимости постепенно (эффект вылетания). &lt;br /&gt;
&lt;br /&gt;
Для этого помещаем наше окно в родительский объект(до помещения окна в родителя, родитель должен находится в центре окна). После создаем таблицу по размеру окна, и располагаем ее на сцене нужным образом. Потом помещаем в нее объект-родитель. Теперь таблица является границами видимости окошка и его элементов. Всё, что будет за границами таблицы будет невидимо. После этого, желательно, поместить таблицу в image 0*0.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Wndtable.png|250px|Расположение в дереве проекта]][[Файл:Parwndtabl.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В данном случае у таблицы 1 столбец, 1 строка и 1 ячейка, в которой находится наше окошко. Листаться объекты в таблице не должны, но с ними нужно взаимодействовать. Если отключить листание вообще, то объекты не реагируют на воздействие. Для того, чтобы объекты вели себя корректно, делаем следующее: включаем листание 360 градусов (по горизонтали и вертикали) и выставляем большое значение в параметра &amp;quot;старт листание(чтобы клик по окошку таблица не воспринимала как попытку листания)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Перемещение ячеек таблицы ==&lt;br /&gt;
Параметры таблицы:&lt;br /&gt;
*'''moveCellColFrom''' - указываем номер ячейки (в столбце), которую хотим переместить&lt;br /&gt;
&lt;br /&gt;
*'''moveCellRowFrom''' - указываем номер ячейки (в строке), которую хотим переместить&lt;br /&gt;
&lt;br /&gt;
*'''moveCellColTo''' - указываем номер ячейки (в столбце), в которую хотим вставить нужную нам ячейку &lt;br /&gt;
&lt;br /&gt;
*'''moveCellRowTo''' - указываем номер ячейки (в строке), в которую хотим вставить нужную нам ячейку&lt;br /&gt;
&lt;br /&gt;
*'''moveCellAnim''' - (0-выкл, 1-вкл), где 0 - быстрое перемещение ячейки без анимации&lt;br /&gt;
&lt;br /&gt;
*'''moveCellAnimTime''' - время перемещения ячейки при moveCellAnim = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Состояние '''moveCell''' - запуск перемещения ячейки&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/Table.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Main objects]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8509</id>
		<title>Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8509"/>
		<updated>2016-11-29T15:53:28Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Перемещение ячеек таблицы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Общие параметры'''&lt;br /&gt;
&lt;br /&gt;
Таблица имеет набор стандартных параметров (см. описание параметров [[Object|Object]]).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tabletext.png]]&lt;br /&gt;
&lt;br /&gt;
Таблица (Тable) является универсальным объектом. Она может использоваться как:&lt;br /&gt;
&lt;br /&gt;
- самостоятельный элемент включая в себя различные элементы ([[Image|Image]], [[Text|Text]], [[Button|Button]], [[Machine|Machine]] и пр.);&lt;br /&gt;
&lt;br /&gt;
- дополнение к таким объектам как [[Patchwork|Patchwork]], [[HiddenList|HiddenList]], [[Invetory|Invetory]] и др. Выступая в роли «поля» для отображения их элементов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table4.png|right]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table5.png]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table6.png]]&lt;br /&gt;
&lt;br /&gt;
Для того чтобы поместить объекты в таблицу, необходимо внести их в группу таблицы в дереве проекта.&lt;br /&gt;
Заполнение таблицы происходит по столбцам. Если в таблице число видимых колонок/строчек меньше общего количества колонок/строчек, то, в таком случае, таблицу можно листать в нужном направлении.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры таблицы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new1.png|300px|right]]&lt;br /&gt;
'''Группа - таблица'''&lt;br /&gt;
&lt;br /&gt;
''(Курсивом в скобках указан id параметра, или состояния)''&lt;br /&gt;
*'''подложка объект''' ''(bgobj)'' - Объект картинка на которой выводится таблица. Задумывалась картинка, которая будет тайлиться до размеров таблицы. В дереве не важно где хранить этот объект.&lt;br /&gt;
*'''колонок''' ''(cols)'' - Максимальное число колонок (ячейки должны поместиться).&lt;br /&gt;
*'''колонок видно''' ''(cShw)'' - Количество колонок, видимых в области вывода таблицы (если включен флаг: ширина фиксированная).&lt;br /&gt;
*'''строчек''' ''(rows)'' - Максимальное число строчек (ячейки должны поместиться).&lt;br /&gt;
*'''строчек видно''' ''(rShw)'' - Количество строчек, видимых в области вывода таблицы (если включен флаг: высота фиксированная).&lt;br /&gt;
*'''скорость листания''' ''(vel)'' - Скорость листания страниц (точек/секунду).&lt;br /&gt;
*'''отсечение''' ''(cut)'' - &amp;quot;ширина и высота&amp;quot; - обрезать графику таблицы по ширине и высоте; &amp;quot;ширина&amp;quot; - обрезать графику таблицы по ширине; &amp;quot;высота&amp;quot; - обрезать графику таблицы по высоте; &amp;quot;нет&amp;quot; - не обрезать.&lt;br /&gt;
*'''добавлять по строкам''' ''(bystr)'' - 1 - добавлять по строкам; 0 - добавлять по столбцам.&lt;br /&gt;
*'''центрировать''' ''(cntr)'' - &amp;quot;нет&amp;quot; - не центрировать (ячейки заполняются начиная от левого края таблицы); &amp;quot;растянуть&amp;quot; - если количество заполненных ячеек меньше видимых, то они равномерно растягиваются по длине таблицы (при этом только увеличивается расстояние между ячейками); &amp;quot;прижать к центру&amp;quot; - если количество заполненных ячеек меньше видимых, то эти ячейки располагаются по центру таблицы (при этом расстояния между ячейками не увеличиваются).&lt;br /&gt;
*'''добавлять только видимые''' - добавлять только видимые объекты таблицы (vis=1)&lt;br /&gt;
&lt;br /&gt;
'''Группа - бордюры таблицы'''&lt;br /&gt;
&lt;br /&gt;
*'''бордюр X''' ''(dx)'' - Ширина бордюра по x (отступ во внутрь слева и справа) от подложки или от ширины объекта для отображения видимых ячеек.&lt;br /&gt;
*'''бордюр Y''' ''(dy)'' - Ширина бордюра по y (отступ во внутрь сверху и снизу) от подложки или от высоты объекта для отображения видимых ячеек.&lt;br /&gt;
*'''отступ X''' ''(dxC)'' - Отступ по x во внутрь (слева и справа) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
*'''отступ Y''' ''(dyC)'' - Отступ по y во внутрь (сверху и снизу) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
&lt;br /&gt;
'''Группа - смещение'''&lt;br /&gt;
&lt;br /&gt;
*'''смещ. X''' - Смещение по x объекта в ячейке.&lt;br /&gt;
*'''смещ. Y''' - Смещение по y объекта в ячейке.&lt;br /&gt;
*'''фон X''' - Смещение по x фона в ячейке.&lt;br /&gt;
*'''фон Y''' - Смещение по y фона в ячейке.&lt;br /&gt;
*'''зачеркивания X''' - Смещение по x ресурса зачеркивания ячейки.&lt;br /&gt;
*'''зачеркивания Y''' - Смещение по y ресурса зачеркивания ячейки.&lt;br /&gt;
&lt;br /&gt;
'''Группа - размеры ячеек'''&lt;br /&gt;
&lt;br /&gt;
*'''фон''' - Графический ресурс фона ячейки. Перетаскивается мышкой из редактора ресурсов. Может отсутствовать.&lt;br /&gt;
*'''ширина фиксированная''' - Если равно 1, то ширины колонок будут фиксированные и определяются полем: колонок видно.&lt;br /&gt;
*'''высота фиксированная''' - Если равно 1, то высоты строчек будут фиксированные и определяются полем: строчек видно.&lt;br /&gt;
*'''сжимать''' - Если равно 1, то будет сжимать картинки без искажения пропорций, чтобы они помещались в ячейке.&lt;br /&gt;
*'''текущая колонка''' - Номер первой видимой колонки, начиная с 0-ля.&lt;br /&gt;
*'''текущая строка''' - Номер первой видимой строки, начиная с 0-ля.&lt;br /&gt;
&lt;br /&gt;
'''Группа - параметры текста'''&lt;br /&gt;
&lt;br /&gt;
*'''текстID''' ''(tTxtID)'' - Текст (id из редактора текста), отображаемый построчно в таблице.&lt;br /&gt;
*'''текст''' ''(tTxt)'' - Cтрока, отображаемая в таблице.&lt;br /&gt;
*'''имя''' ''(fn)'' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' ''(fs)'' - Размер шрифта в поинтах. &lt;br /&gt;
*'''цвет 1''' ''(fc1)'' - Цвет текста обычного вида.&lt;br /&gt;
*'''цвет 2''' ''(fc2)'' - Цвет текста помеченной ячейки.&lt;br /&gt;
*'''alpha2''' ''(al2)'' - Прозрачность картинки в помеченной ячейке.&lt;br /&gt;
*'''поз. гориз.''' ''(cellAlHor)'' - Горизонтальное выравнивание текста (0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому).&lt;br /&gt;
*'''поз. верт.''' ''(cellAlVer)'' - Вертикальное выравнивание текста (0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему).&lt;br /&gt;
*'''цвет зачеркивания 1''' ''(str_c1)'' - Цвет зачеркивания текста обычного вида.&lt;br /&gt;
*'''цвет зачеркивания 2''' ''(str_c2)'' - Цвет зачеркивания текста помеченной ячейки.&lt;br /&gt;
*'''ресурс зачеркивания''' ''(crRes)'' - Графический ресурс зачеркивания ячейки. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''толщина зачеркивания''' ''(str_s)'' - Толщина зачеркивания в пикселях.&lt;br /&gt;
*'''отступ''' ''(skip)'' - Вертикальное расстояние в пикселях в одной ячейке между словами в словосочетании (например в словосочетании Морская звезда, если оно не помещается горизонтально в одну ячейку - это вертикальное расстояние между Морская и звезда).&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры ==&lt;br /&gt;
'''Группа - Управление''' &lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new2 new.PNG|450px|right]]&lt;br /&gt;
&lt;br /&gt;
Когда таблица листаемая, можно отображать индикаторы страниц. У каждого индикатора два состояния: вкл - если соответствующая страница видна на экране и выкл в противоположном случае. Нажав на соответствующий индикатор, таблица перемещается со скоростью, указанной в параметре &amp;quot;скорость листания&amp;quot; &lt;br /&gt;
на необходимую страницу.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор ВКЛ''' - Картинка включенного индикатора.&lt;br /&gt;
*'''индикатор ВЫКЛ''' - Картинка выключенного индикатора.&lt;br /&gt;
*'''левая кнопка''' - Кнопка для листания списка влево.&lt;br /&gt;
*'''правая кнопка''' - Кнопка для листания списка вправо.&lt;br /&gt;
*'''верхняя кнопка'''- Кнопка для листания списка вверх. &lt;br /&gt;
*'''нижняя кнопка''' - Кнопка для листания списка вниз. &lt;br /&gt;
*'''отступ X''' - Отступ по x от таблицы.&lt;br /&gt;
*'''отступ Y''' - Отступ по y от таблицы.&lt;br /&gt;
*'''отступ W''' - Отступ между ячейками таблицы индексов.&lt;br /&gt;
&lt;br /&gt;
'''Группа - листание'''&lt;br /&gt;
&lt;br /&gt;
*'''изинг скорости листания''' ''(scrVelEasing)'' - Изинг скорости листания ([http://easings.net/ru шаблоны])&lt;br /&gt;
*'''макс. скорость листания''' ''(scrMaxSpeed)'' - Максимальная скорость листания при броске&lt;br /&gt;
*'''макс. длинна листания в страницах''' ''(scrMaxPages)'' - Максимальная длинна листания при броске в страницах - максимальное кол-во страниц (элементов?), на которое можно листнуть таблицу за раз&lt;br /&gt;
*'''тип листания''' - Тип листания таблицы: 0 - по страницам; 1 - в зависимости от скорости (IOS).&lt;br /&gt;
*'''листать как книгу''' - да - при нечетном колличестве добавляемых страниц будут добавляться пустые ячейки; нет - листание по колличеству видимых ячеек.&lt;br /&gt;
*'''старт листания''' - Смещение в точках, начиная с которого скролим таблицу.&lt;br /&gt;
*'''гориз. листание''' - Горизонтальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''вертик. листание''' - Вертикальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''цикл. листание''' - Циклическое листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''листание 360 градусов''' - Разрешено листание в двух направлениях: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''затухание''' - Затухание скорости листания таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
&lt;br /&gt;
== Добавляемые параметры ==&lt;br /&gt;
[[Файл:Table2_1.PNG|right]]&lt;br /&gt;
Открывается при нажатии правой кнопки мыши в поле параметров таблицы.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ширина настраиваемая'''&lt;br /&gt;
*'''ширина колонок''' - Через точку с запятой указываем ширину колонок по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''высота настраиваемая'''&lt;br /&gt;
*'''высота строчек''' - Через точку с запятой указываем высоту строчек по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''добавить ячейку в таблицу'''&lt;br /&gt;
*'''текстID''' - Строка (id из редактора строк), отображаемая в ячейке.&lt;br /&gt;
*'''текст''' - Строка, отображаемая в ячейке.&lt;br /&gt;
*'''картинка''' - Картинка, рисуемая в ячейке (строки игнорируются).&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить состояние объекта''' - при тапе&lt;br /&gt;
*'''объект''' - Строка которого мы меняем.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево - изменить состояние объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
== Состояния таблицы ==&lt;br /&gt;
Так же мы можем управлять таблицей изменяя ее состояния.&lt;br /&gt;
&lt;br /&gt;
*'''first''' - Перелистнуть на первую страницу таблицы.&lt;br /&gt;
*'''last''' - Перелистнуть на последнюю страницу таблицы.&lt;br /&gt;
*'''prev''' - Перелистнуть на предыдущую страницу таблицы (влево по горизонтали).&lt;br /&gt;
*'''next''' - Перелистнуть на следующую страницу таблицы (вправо по горизонтали).&lt;br /&gt;
*'''up''' - Перелистнуть на следующую страницу таблицы (вверх по вертикали).&lt;br /&gt;
*'''down''' - Перелистнуть на предыдущую страницу таблицы (вниз по вертикали).&lt;br /&gt;
*'''refresh''' - Обновить таблицу.&lt;br /&gt;
*'''reload''' - перезаполнить таблицу. Необходимо в случае, когда объекты в таблицу добавляются путем установки таблицы в качестве родителя (передаём сразу при смене родителя, после каждой смены родителя).&lt;br /&gt;
*'''flyto''' - Таблица плавно приедет к значению curRow и curCol, если они были изменены.&lt;br /&gt;
*'''maxRow''' - Количество заполненных строк.&lt;br /&gt;
*'''maxCol''' - Количество заполненных колонок.&lt;br /&gt;
*'''curRow''' - Текущая строка.&lt;br /&gt;
*'''curCol''' - Текущая колонка.&lt;br /&gt;
Если изменить таблице значение параметра (текущего рядка или столбика), то после необходимо передать таблице состояние refresh или flyto, чтобы увидеть изменения. При refresh рядок или столбец поменяется мгновенно, при flyto таблица &amp;quot;приплывет&amp;quot; к нужному рядку или столбцу.&lt;br /&gt;
&lt;br /&gt;
== Использование таблицы для анимации ==&lt;br /&gt;
&lt;br /&gt;
=== Использование состояния flyto ===&lt;br /&gt;
&lt;br /&gt;
Иногда нужно получить анимацию выезда (или другого движения) некоторого объекта (окна, рисунка и тд) на экран. Это можно сделать с помощью таблицы. Ниже приведен пример для движения вниз (с постепенным пропаданием объекта из видимости). Делаем следующее: создаем таблицу(ее параметры приведены на рисунке) нужного размера(как минимум, чтобы поместился нужный объект). В нее помещаем 2 объекта: пустой рисунок(при движении он заменит собой движущийся объект) и объект-родитель(image размером 0*0 ), в котором находится объект, который будет двигаться.&lt;br /&gt;
&lt;br /&gt;
'''Важно!''' Для корректного отображения объекта в таблице, нужно:&lt;br /&gt;
* Создать таблицу и разместить ее нужным образом,.&lt;br /&gt;
* Разместить объект родитель посередине движущегося объекта &lt;br /&gt;
* Поместить движущийся объект в родителя&lt;br /&gt;
* Поместить родителя в таблицу&lt;br /&gt;
&lt;br /&gt;
Если нужно подкорректировать положение объекта в таблице, то нужно изменять именно его координаты. Изменение координат родителя не приведет к смещению объекта на экране вьювера.&lt;br /&gt;
&lt;br /&gt;
Для запуска анимации таблице нужно изменить значение текущей строки (столбца, при горизонтальном движении), после чего передать ей состояние &lt;br /&gt;
flyto. Скорость анимации можно настроить изменяя параметр таблицы - скорость листания.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tblanimmove.png|250px|Расположение в дереве проекта]] [[Файл:Animmovestate.png|250px|Машина, запускающая анимацию]] [[Файл:Tableanimmove.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В объекта-родителя можно помещать не только картинки, но и машины(которые могут реализовывать собственное движение, при этом, при попадании за край таблицы, объект постепенно уходит из зоны видимости). Также в родителя можно поместить еще одну анимацию с помощью таблицы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В данном случае нужно движение по вертикали вниз. Для этого таблица имеет следующие параметры: 1 столбец, 2 строки, нелистаемая( тк не нужно взаимодействовать с объектами ). Принцип работы прост ячейка (1,0) заменяется на (0,0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Передвижение предмета под границу окна ===&lt;br /&gt;
&lt;br /&gt;
Такой же эффект можно достичь, если использовать ректангл. Помещаем окно в ректангл и задаем ему параметр отсечение.&lt;br /&gt;
Использование ректангла потребляет меньше ресурсов.&lt;br /&gt;
&lt;br /&gt;
С помощью таблицы можно ограничить зону видимости предмета на экране. При этом, при выходе за эту зону, объект пропадает из видимости постепенно (эффект вылетания). &lt;br /&gt;
&lt;br /&gt;
Для этого помещаем наше окно в родительский объект(до помещения окна в родителя, родитель должен находится в центре окна). После создаем таблицу по размеру окна, и располагаем ее на сцене нужным образом. Потом помещаем в нее объект-родитель. Теперь таблица является границами видимости окошка и его элементов. Всё, что будет за границами таблицы будет невидимо. После этого, желательно, поместить таблицу в image 0*0.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Wndtable.png|250px|Расположение в дереве проекта]][[Файл:Parwndtabl.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В данном случае у таблицы 1 столбец, 1 строка и 1 ячейка, в которой находится наше окошко. Листаться объекты в таблице не должны, но с ними нужно взаимодействовать. Если отключить листание вообще, то объекты не реагируют на воздействие. Для того, чтобы объекты вели себя корректно, делаем следующее: включаем листание 360 градусов (по горизонтали и вертикали) и выставляем большое значение в параметра &amp;quot;старт листание(чтобы клик по окошку таблица не воспринимала как попытку листания)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Перемещение ячеек таблицы ==&lt;br /&gt;
Параметры таблицы:&lt;br /&gt;
moveCellColFrom - указываем номер ячейки (в столбце), которую хотим переместить&lt;br /&gt;
&lt;br /&gt;
moveCellRowFrom - указываем номер ячейки (в строке), которую хотим переместить&lt;br /&gt;
&lt;br /&gt;
moveCellColTo - указываем номер ячейки (в столбце), в которую хотим вставить нужную нам ячейку &lt;br /&gt;
&lt;br /&gt;
moveCellRowTo - указываем номер ячейки (в строке), в которую хотим вставить нужную нам ячейку&lt;br /&gt;
&lt;br /&gt;
moveCellAnim - (0-выкл, 1-вкл), где 0 - быстрое перемещение ячейки без анимации&lt;br /&gt;
&lt;br /&gt;
moveCellAnimTime - время перемещения ячейки при moveCellAnim = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Состояние moveCell - запуск перемещения ячейки&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/Table.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Main objects]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8508</id>
		<title>Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Table&amp;diff=8508"/>
		<updated>2016-11-29T15:52:57Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
'''Общие параметры'''&lt;br /&gt;
&lt;br /&gt;
Таблица имеет набор стандартных параметров (см. описание параметров [[Object|Object]]).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tabletext.png]]&lt;br /&gt;
&lt;br /&gt;
Таблица (Тable) является универсальным объектом. Она может использоваться как:&lt;br /&gt;
&lt;br /&gt;
- самостоятельный элемент включая в себя различные элементы ([[Image|Image]], [[Text|Text]], [[Button|Button]], [[Machine|Machine]] и пр.);&lt;br /&gt;
&lt;br /&gt;
- дополнение к таким объектам как [[Patchwork|Patchwork]], [[HiddenList|HiddenList]], [[Invetory|Invetory]] и др. Выступая в роли «поля» для отображения их элементов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table4.png|right]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table5.png]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table6.png]]&lt;br /&gt;
&lt;br /&gt;
Для того чтобы поместить объекты в таблицу, необходимо внести их в группу таблицы в дереве проекта.&lt;br /&gt;
Заполнение таблицы происходит по столбцам. Если в таблице число видимых колонок/строчек меньше общего количества колонок/строчек, то, в таком случае, таблицу можно листать в нужном направлении.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры таблицы ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new1.png|300px|right]]&lt;br /&gt;
'''Группа - таблица'''&lt;br /&gt;
&lt;br /&gt;
''(Курсивом в скобках указан id параметра, или состояния)''&lt;br /&gt;
*'''подложка объект''' ''(bgobj)'' - Объект картинка на которой выводится таблица. Задумывалась картинка, которая будет тайлиться до размеров таблицы. В дереве не важно где хранить этот объект.&lt;br /&gt;
*'''колонок''' ''(cols)'' - Максимальное число колонок (ячейки должны поместиться).&lt;br /&gt;
*'''колонок видно''' ''(cShw)'' - Количество колонок, видимых в области вывода таблицы (если включен флаг: ширина фиксированная).&lt;br /&gt;
*'''строчек''' ''(rows)'' - Максимальное число строчек (ячейки должны поместиться).&lt;br /&gt;
*'''строчек видно''' ''(rShw)'' - Количество строчек, видимых в области вывода таблицы (если включен флаг: высота фиксированная).&lt;br /&gt;
*'''скорость листания''' ''(vel)'' - Скорость листания страниц (точек/секунду).&lt;br /&gt;
*'''отсечение''' ''(cut)'' - &amp;quot;ширина и высота&amp;quot; - обрезать графику таблицы по ширине и высоте; &amp;quot;ширина&amp;quot; - обрезать графику таблицы по ширине; &amp;quot;высота&amp;quot; - обрезать графику таблицы по высоте; &amp;quot;нет&amp;quot; - не обрезать.&lt;br /&gt;
*'''добавлять по строкам''' ''(bystr)'' - 1 - добавлять по строкам; 0 - добавлять по столбцам.&lt;br /&gt;
*'''центрировать''' ''(cntr)'' - &amp;quot;нет&amp;quot; - не центрировать (ячейки заполняются начиная от левого края таблицы); &amp;quot;растянуть&amp;quot; - если количество заполненных ячеек меньше видимых, то они равномерно растягиваются по длине таблицы (при этом только увеличивается расстояние между ячейками); &amp;quot;прижать к центру&amp;quot; - если количество заполненных ячеек меньше видимых, то эти ячейки располагаются по центру таблицы (при этом расстояния между ячейками не увеличиваются).&lt;br /&gt;
*'''добавлять только видимые''' - добавлять только видимые объекты таблицы (vis=1)&lt;br /&gt;
&lt;br /&gt;
'''Группа - бордюры таблицы'''&lt;br /&gt;
&lt;br /&gt;
*'''бордюр X''' ''(dx)'' - Ширина бордюра по x (отступ во внутрь слева и справа) от подложки или от ширины объекта для отображения видимых ячеек.&lt;br /&gt;
*'''бордюр Y''' ''(dy)'' - Ширина бордюра по y (отступ во внутрь сверху и снизу) от подложки или от высоты объекта для отображения видимых ячеек.&lt;br /&gt;
*'''отступ X''' ''(dxC)'' - Отступ по x во внутрь (слева и справа) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
*'''отступ Y''' ''(dyC)'' - Отступ по y во внутрь (сверху и снизу) в ячейке, чтобы содержимое соседних ячеек не сливалось.&lt;br /&gt;
&lt;br /&gt;
'''Группа - смещение'''&lt;br /&gt;
&lt;br /&gt;
*'''смещ. X''' - Смещение по x объекта в ячейке.&lt;br /&gt;
*'''смещ. Y''' - Смещение по y объекта в ячейке.&lt;br /&gt;
*'''фон X''' - Смещение по x фона в ячейке.&lt;br /&gt;
*'''фон Y''' - Смещение по y фона в ячейке.&lt;br /&gt;
*'''зачеркивания X''' - Смещение по x ресурса зачеркивания ячейки.&lt;br /&gt;
*'''зачеркивания Y''' - Смещение по y ресурса зачеркивания ячейки.&lt;br /&gt;
&lt;br /&gt;
'''Группа - размеры ячеек'''&lt;br /&gt;
&lt;br /&gt;
*'''фон''' - Графический ресурс фона ячейки. Перетаскивается мышкой из редактора ресурсов. Может отсутствовать.&lt;br /&gt;
*'''ширина фиксированная''' - Если равно 1, то ширины колонок будут фиксированные и определяются полем: колонок видно.&lt;br /&gt;
*'''высота фиксированная''' - Если равно 1, то высоты строчек будут фиксированные и определяются полем: строчек видно.&lt;br /&gt;
*'''сжимать''' - Если равно 1, то будет сжимать картинки без искажения пропорций, чтобы они помещались в ячейке.&lt;br /&gt;
*'''текущая колонка''' - Номер первой видимой колонки, начиная с 0-ля.&lt;br /&gt;
*'''текущая строка''' - Номер первой видимой строки, начиная с 0-ля.&lt;br /&gt;
&lt;br /&gt;
'''Группа - параметры текста'''&lt;br /&gt;
&lt;br /&gt;
*'''текстID''' ''(tTxtID)'' - Текст (id из редактора текста), отображаемый построчно в таблице.&lt;br /&gt;
*'''текст''' ''(tTxt)'' - Cтрока, отображаемая в таблице.&lt;br /&gt;
*'''имя''' ''(fn)'' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).&lt;br /&gt;
*'''размер''' ''(fs)'' - Размер шрифта в поинтах. &lt;br /&gt;
*'''цвет 1''' ''(fc1)'' - Цвет текста обычного вида.&lt;br /&gt;
*'''цвет 2''' ''(fc2)'' - Цвет текста помеченной ячейки.&lt;br /&gt;
*'''alpha2''' ''(al2)'' - Прозрачность картинки в помеченной ячейке.&lt;br /&gt;
*'''поз. гориз.''' ''(cellAlHor)'' - Горизонтальное выравнивание текста (0 - нет выравнивания; 1 - прижать к левому краю; 2 - центр; 3 - к правому).&lt;br /&gt;
*'''поз. верт.''' ''(cellAlVer)'' - Вертикальное выравнивание текста (0 - нет выравнивания; 1 - прижать к верхнему краю; 2 - центр; 3 - к нижнему).&lt;br /&gt;
*'''цвет зачеркивания 1''' ''(str_c1)'' - Цвет зачеркивания текста обычного вида.&lt;br /&gt;
*'''цвет зачеркивания 2''' ''(str_c2)'' - Цвет зачеркивания текста помеченной ячейки.&lt;br /&gt;
*'''ресурс зачеркивания''' ''(crRes)'' - Графический ресурс зачеркивания ячейки. Перетаскивается мышкой из редактора ресурсов (поле должно находится в состоянии редактирования). Может отсутствовать.&lt;br /&gt;
*'''толщина зачеркивания''' ''(str_s)'' - Толщина зачеркивания в пикселях.&lt;br /&gt;
*'''отступ''' ''(skip)'' - Вертикальное расстояние в пикселях в одной ячейке между словами в словосочетании (например в словосочетании Морская звезда, если оно не помещается горизонтально в одну ячейку - это вертикальное расстояние между Морская и звезда).&lt;br /&gt;
&lt;br /&gt;
== Дополнительные параметры ==&lt;br /&gt;
'''Группа - Управление''' &lt;br /&gt;
&lt;br /&gt;
[[Файл:Table new2 new.PNG|450px|right]]&lt;br /&gt;
&lt;br /&gt;
Когда таблица листаемая, можно отображать индикаторы страниц. У каждого индикатора два состояния: вкл - если соответствующая страница видна на экране и выкл в противоположном случае. Нажав на соответствующий индикатор, таблица перемещается со скоростью, указанной в параметре &amp;quot;скорость листания&amp;quot; &lt;br /&gt;
на необходимую страницу.&lt;br /&gt;
&lt;br /&gt;
*'''индикатор ВКЛ''' - Картинка включенного индикатора.&lt;br /&gt;
*'''индикатор ВЫКЛ''' - Картинка выключенного индикатора.&lt;br /&gt;
*'''левая кнопка''' - Кнопка для листания списка влево.&lt;br /&gt;
*'''правая кнопка''' - Кнопка для листания списка вправо.&lt;br /&gt;
*'''верхняя кнопка'''- Кнопка для листания списка вверх. &lt;br /&gt;
*'''нижняя кнопка''' - Кнопка для листания списка вниз. &lt;br /&gt;
*'''отступ X''' - Отступ по x от таблицы.&lt;br /&gt;
*'''отступ Y''' - Отступ по y от таблицы.&lt;br /&gt;
*'''отступ W''' - Отступ между ячейками таблицы индексов.&lt;br /&gt;
&lt;br /&gt;
'''Группа - листание'''&lt;br /&gt;
&lt;br /&gt;
*'''изинг скорости листания''' ''(scrVelEasing)'' - Изинг скорости листания ([http://easings.net/ru шаблоны])&lt;br /&gt;
*'''макс. скорость листания''' ''(scrMaxSpeed)'' - Максимальная скорость листания при броске&lt;br /&gt;
*'''макс. длинна листания в страницах''' ''(scrMaxPages)'' - Максимальная длинна листания при броске в страницах - максимальное кол-во страниц (элементов?), на которое можно листнуть таблицу за раз&lt;br /&gt;
*'''тип листания''' - Тип листания таблицы: 0 - по страницам; 1 - в зависимости от скорости (IOS).&lt;br /&gt;
*'''листать как книгу''' - да - при нечетном колличестве добавляемых страниц будут добавляться пустые ячейки; нет - листание по колличеству видимых ячеек.&lt;br /&gt;
*'''старт листания''' - Смещение в точках, начиная с которого скролим таблицу.&lt;br /&gt;
*'''гориз. листание''' - Горизонтальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''вертик. листание''' - Вертикальное листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''цикл. листание''' - Циклическое листание таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''листание 360 градусов''' - Разрешено листание в двух направлениях: 0 - выключено; 1 - включено.&lt;br /&gt;
*'''затухание''' - Затухание скорости листания таблицы: 0 - выключено; 1 - включено.&lt;br /&gt;
&lt;br /&gt;
== Добавляемые параметры ==&lt;br /&gt;
[[Файл:Table2_1.PNG|right]]&lt;br /&gt;
Открывается при нажатии правой кнопки мыши в поле параметров таблицы.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''ширина настраиваемая'''&lt;br /&gt;
*'''ширина колонок''' - Через точку с запятой указываем ширину колонок по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''высота настраиваемая'''&lt;br /&gt;
*'''высота строчек''' - Через точку с запятой указываем высоту строчек по-порядку.&lt;br /&gt;
[[Файл:+.png]] '''добавить ячейку в таблицу'''&lt;br /&gt;
*'''текстID''' - Строка (id из редактора строк), отображаемая в ячейке.&lt;br /&gt;
*'''текст''' - Строка, отображаемая в ячейке.&lt;br /&gt;
*'''картинка''' - Картинка, рисуемая в ячейке (строки игнорируются).&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''изменить состояние объекта''' - при тапе&lt;br /&gt;
*'''объект''' - Строка которого мы меняем.&lt;br /&gt;
*'''состояние''' - Значение нового состояния.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево - изменить состояние объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании влево  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вправо  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вниз  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх - изменить состояние объекта''' &lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице перевести объект в состояние из следующего поля.&lt;br /&gt;
*'''состояние''' - Новое состояние для объекта из предыдущего поля.&lt;br /&gt;
&lt;br /&gt;
[[Файл:+.png]] '''при листании вверх  - изменить параметр (свойство) объекта'''&lt;br /&gt;
*'''объект''' - При смене текущей страницы в таблице этот объект меняет свой параметр.&lt;br /&gt;
*'''свойство''' - Параметр, который мы изменяем.&lt;br /&gt;
*'''значение''' - Новое значение параметра.&lt;br /&gt;
&lt;br /&gt;
== Состояния таблицы ==&lt;br /&gt;
Так же мы можем управлять таблицей изменяя ее состояния.&lt;br /&gt;
&lt;br /&gt;
*'''first''' - Перелистнуть на первую страницу таблицы.&lt;br /&gt;
*'''last''' - Перелистнуть на последнюю страницу таблицы.&lt;br /&gt;
*'''prev''' - Перелистнуть на предыдущую страницу таблицы (влево по горизонтали).&lt;br /&gt;
*'''next''' - Перелистнуть на следующую страницу таблицы (вправо по горизонтали).&lt;br /&gt;
*'''up''' - Перелистнуть на следующую страницу таблицы (вверх по вертикали).&lt;br /&gt;
*'''down''' - Перелистнуть на предыдущую страницу таблицы (вниз по вертикали).&lt;br /&gt;
*'''refresh''' - Обновить таблицу.&lt;br /&gt;
*'''reload''' - перезаполнить таблицу. Необходимо в случае, когда объекты в таблицу добавляются путем установки таблицы в качестве родителя (передаём сразу при смене родителя, после каждой смены родителя).&lt;br /&gt;
*'''flyto''' - Таблица плавно приедет к значению curRow и curCol, если они были изменены.&lt;br /&gt;
*'''maxRow''' - Количество заполненных строк.&lt;br /&gt;
*'''maxCol''' - Количество заполненных колонок.&lt;br /&gt;
*'''curRow''' - Текущая строка.&lt;br /&gt;
*'''curCol''' - Текущая колонка.&lt;br /&gt;
Если изменить таблице значение параметра (текущего рядка или столбика), то после необходимо передать таблице состояние refresh или flyto, чтобы увидеть изменения. При refresh рядок или столбец поменяется мгновенно, при flyto таблица &amp;quot;приплывет&amp;quot; к нужному рядку или столбцу.&lt;br /&gt;
&lt;br /&gt;
== Использование таблицы для анимации ==&lt;br /&gt;
&lt;br /&gt;
=== Использование состояния flyto ===&lt;br /&gt;
&lt;br /&gt;
Иногда нужно получить анимацию выезда (или другого движения) некоторого объекта (окна, рисунка и тд) на экран. Это можно сделать с помощью таблицы. Ниже приведен пример для движения вниз (с постепенным пропаданием объекта из видимости). Делаем следующее: создаем таблицу(ее параметры приведены на рисунке) нужного размера(как минимум, чтобы поместился нужный объект). В нее помещаем 2 объекта: пустой рисунок(при движении он заменит собой движущийся объект) и объект-родитель(image размером 0*0 ), в котором находится объект, который будет двигаться.&lt;br /&gt;
&lt;br /&gt;
'''Важно!''' Для корректного отображения объекта в таблице, нужно:&lt;br /&gt;
* Создать таблицу и разместить ее нужным образом,.&lt;br /&gt;
* Разместить объект родитель посередине движущегося объекта &lt;br /&gt;
* Поместить движущийся объект в родителя&lt;br /&gt;
* Поместить родителя в таблицу&lt;br /&gt;
&lt;br /&gt;
Если нужно подкорректировать положение объекта в таблице, то нужно изменять именно его координаты. Изменение координат родителя не приведет к смещению объекта на экране вьювера.&lt;br /&gt;
&lt;br /&gt;
Для запуска анимации таблице нужно изменить значение текущей строки (столбца, при горизонтальном движении), после чего передать ей состояние &lt;br /&gt;
flyto. Скорость анимации можно настроить изменяя параметр таблицы - скорость листания.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Tblanimmove.png|250px|Расположение в дереве проекта]] [[Файл:Animmovestate.png|250px|Машина, запускающая анимацию]] [[Файл:Tableanimmove.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В объекта-родителя можно помещать не только картинки, но и машины(которые могут реализовывать собственное движение, при этом, при попадании за край таблицы, объект постепенно уходит из зоны видимости). Также в родителя можно поместить еще одну анимацию с помощью таблицы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В данном случае нужно движение по вертикали вниз. Для этого таблица имеет следующие параметры: 1 столбец, 2 строки, нелистаемая( тк не нужно взаимодействовать с объектами ). Принцип работы прост ячейка (1,0) заменяется на (0,0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Передвижение предмета под границу окна ===&lt;br /&gt;
&lt;br /&gt;
Такой же эффект можно достичь, если использовать ректангл. Помещаем окно в ректангл и задаем ему параметр отсечение.&lt;br /&gt;
Использование ректангла потребляет меньше ресурсов.&lt;br /&gt;
&lt;br /&gt;
С помощью таблицы можно ограничить зону видимости предмета на экране. При этом, при выходе за эту зону, объект пропадает из видимости постепенно (эффект вылетания). &lt;br /&gt;
&lt;br /&gt;
Для этого помещаем наше окно в родительский объект(до помещения окна в родителя, родитель должен находится в центре окна). После создаем таблицу по размеру окна, и располагаем ее на сцене нужным образом. Потом помещаем в нее объект-родитель. Теперь таблица является границами видимости окошка и его элементов. Всё, что будет за границами таблицы будет невидимо. После этого, желательно, поместить таблицу в image 0*0.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Wndtable.png|250px|Расположение в дереве проекта]][[Файл:Parwndtabl.png|250px|Параметры таблицы]]&lt;br /&gt;
&lt;br /&gt;
В данном случае у таблицы 1 столбец, 1 строка и 1 ячейка, в которой находится наше окошко. Листаться объекты в таблице не должны, но с ними нужно взаимодействовать. Если отключить листание вообще, то объекты не реагируют на воздействие. Для того, чтобы объекты вели себя корректно, делаем следующее: включаем листание 360 градусов (по горизонтали и вертикали) и выставляем большое значение в параметра &amp;quot;старт листание(чтобы клик по окошку таблица не воспринимала как попытку листания)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Перемещение ячеек таблицы ==&lt;br /&gt;
Параметры таблицы:&lt;br /&gt;
moveCellColFrom - указываем номер ячейки (в столбце), которую хотим переместить&lt;br /&gt;
moveCellRowFrom - указываем номер ячейки (в строке), которую хотим переместить&lt;br /&gt;
moveCellColTo - указываем номер ячейки (в столбце), в которую хотим вставить нужную нам ячейку &lt;br /&gt;
moveCellRowTo - указываем номер ячейки (в строке), в которую хотим вставить нужную нам ячейку&lt;br /&gt;
moveCellAnim - (0-выкл, 1-вкл), где 0 - быстрое перемещение ячейки без анимации&lt;br /&gt;
moveCellAnimTime - время перемещения ячейки при moveCellAnim = 1&lt;br /&gt;
&lt;br /&gt;
Состояние moveCell - запуск перемещения ячейки&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/Table.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Main objects]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8454</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8454"/>
		<updated>2016-10-07T12:04:51Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, errormanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у объекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url:'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8453</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8453"/>
		<updated>2016-10-07T11:40:44Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у объекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url:'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8452</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8452"/>
		<updated>2016-10-07T11:38:00Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Статистка adjust */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url:'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8451</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8451"/>
		<updated>2016-10-07T07:39:00Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Уведомления для Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url:'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8450</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8450"/>
		<updated>2016-10-07T07:38:40Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Уведомления для Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url:'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8449</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8449"/>
		<updated>2016-10-07T07:38:15Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всегда одна. Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8448</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8448"/>
		<updated>2016-10-07T07:37:53Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=8447</id>
		<title>Notification</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=Notification&amp;diff=8447"/>
		<updated>2016-10-07T07:37:09Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
[[Object|Объект]] '''Notification''' предназначен для показа push уведомлений на IOS устройствах.&lt;br /&gt;
&lt;br /&gt;
==Параметры объекта==&lt;br /&gt;
&lt;br /&gt;
*'''имя события''' (''name'') - Имя события. Если у двух событий одинаковые имена - сохранится первое. Не обязательный параметр. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''сообщение''' (''message'') - Основной текст события. Перетягивается из редактора текстов. Поле должно быть в состоянии редактирования.&lt;br /&gt;
&lt;br /&gt;
*'''год''' (''year'') - Год, когда сработает оповещение. Минимальное значение - 1971 .&lt;br /&gt;
&lt;br /&gt;
*'''месяц''' (''month'') - Месяц, когда сработает оповещение. Минимальное значение - 0, максимальное - 11 .&lt;br /&gt;
&lt;br /&gt;
*'''день''' (''day'') - День, когда сработает оповещение. Минимальное значение - 1, максимальное - 31 .&lt;br /&gt;
&lt;br /&gt;
*'''час''' (''hour'') - Час, когда сработает оповещение. Минимальное значение - 0, максимальное - 23 .&lt;br /&gt;
&lt;br /&gt;
*'''минута''' (''min'') - Минута, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''секунда''' (''sec'') - Секунда, когда сработает оповещение. Минимальное значение - 0, максимальное - 59 .&lt;br /&gt;
&lt;br /&gt;
*'''задержка''' (''delay'') - Задержка от текущего времени до оповещения. Если задана не -1 - то используется вместо даты.&lt;br /&gt;
&lt;br /&gt;
==Состояния объекта==&lt;br /&gt;
&lt;br /&gt;
*'''set''' - устанавливает нотификацию в очередь&lt;br /&gt;
&lt;br /&gt;
*'''clear''' - очищает очередь нотификации&lt;br /&gt;
&lt;br /&gt;
*'''erase''' - очищает очередь нотификации от уведомления с указаннным ID темы и ID сообщения&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
==Пример применения==&lt;br /&gt;
&lt;br /&gt;
Пусть через 5 минут после нажатия на кнопку у пользователя появиится уведомление с текстом &amp;quot;message of notification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Для этого разместим на сцене объект notification и установим ему следующие параметры:&lt;br /&gt;
&lt;br /&gt;
* задержка - 300&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 01.jpg |upright=0.5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В текстовую базу занесём новые записи с названием события нотификации и текстом нотификации.&lt;br /&gt;
&lt;br /&gt;
Далее добавим на сцену кнопку, которая будет передавать параметры объекту &amp;quot;notification&amp;quot; и переводить объект &amp;quot;notification&amp;quot; в состояние &amp;quot;set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Notification 02.jpg |upright=0.5 ]]&lt;br /&gt;
&lt;br /&gt;
Теперь при нажатии на кнопку в очередь будет поставлено извещение, которое покажет система через 5 минут.&lt;br /&gt;
На устройстве это выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0043.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tleft&amp;quot; style=&amp;quot;clear:none&amp;quot;&amp;gt; [[Файл:IMG 0046.PNG | мини |200пкс ]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&lt;br /&gt;
В обычном случае по нажатию на сообщение открывается приложение на экране котором были, или на изначальном экране в зависимости от настроек.&lt;br /&gt;
У объекта [[options]] можно задать параметр '''notifScrID''' (значение параметра - id экрана). Если параметр задан, то при открытии приложения из уведомления откроется выбранный экран.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
[http://fs5.absolutist.com/files/wikisample/notification.rar Download]&lt;br /&gt;
&lt;br /&gt;
[[Category:Options]]&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8446</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8446"/>
		<updated>2016-10-07T07:36:33Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Уведомления для Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8445</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8445"/>
		<updated>2016-10-07T07:32:40Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users''' Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''User to user''' Это уведомления об инвайтах и отправке подарков.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications''' Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений о подарках параметр '''viber url''' указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр '''viber text''' берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial - App to users, User to user&lt;br /&gt;
&lt;br /&gt;
cloud - новые ключи&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8444</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8444"/>
		<updated>2016-10-07T07:28:28Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Уведомления для Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
'''App to users'''&lt;br /&gt;
&lt;br /&gt;
Уведомления типа &amp;quot;Вы не заходили в игру 1,3,7 дней&amp;quot; отправляются в чат Вайбера, как App to users. Устанавливаем состоянием &amp;quot;set_parse&amp;quot;, чтобы слать только в вайбер.&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; необходимо указать объекту фб параметр viber_text, viber_url:&lt;br /&gt;
&lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
&lt;br /&gt;
url картинки обязательно должен содержать в конце &amp;quot;dl=1&amp;quot;. С окончанием &amp;quot;dl=0&amp;quot; картинка не отобразится!&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications'''&lt;br /&gt;
&lt;br /&gt;
Уведомления типа &amp;quot;Вы не заходили в игру 2,6,14 дней&amp;quot; отправляются на устройство, как пуши (Push_Notifications). Устанавливаем состоянием &amp;quot;set_native&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Параметры viber_text, viber_url'''&lt;br /&gt;
&lt;br /&gt;
Уведомления App to users, User to user включают в себя текст, картинку и кнопку, которая ведет в игру. Текст на кнопках должен быть разный в зависимости от уведомления. Текст на кнопке берется из параметра viber_text, картинка - из viber_url.&lt;br /&gt;
&lt;br /&gt;
Для уведомлений, установленных через машину состояний, эти параметры необходимо указать объекту facebook и прописать в машине, перед вызовом состояния &amp;quot;set_parse&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Для уведомлений об инвайтах параметр viber url указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strids&amp;quot;                id=&amp;quot;invite_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр viber text берем из sentence1 заголовка инвайта:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок&amp;quot;     type=&amp;quot;strid&amp;quot;                 id=&amp;quot;invite_t&amp;quot;   label=&amp;quot;заголовок&amp;quot;     hint=&amp;quot;заголовок инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для уведомлений оо подарках параметр viber url указывается в объекте Esocial:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;viber url&amp;quot;     type=&amp;quot;strid&amp;quot;                  id=&amp;quot;gift_viber_url&amp;quot; label=&amp;quot;viber url&amp;quot; hint=&amp;quot;viber url инвайта&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр viber text берем из sentence1 заголовка отправки подарка:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;заголовок уведомления&amp;quot; type=&amp;quot;strid&amp;quot;          id=&amp;quot;gift_not_t&amp;quot;   label=&amp;quot;заголовок уведомления&amp;quot;     hint=&amp;quot;заголовок уведомления&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Viber_url.png&amp;diff=8443</id>
		<title>Файл:Viber url.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Viber_url.png&amp;diff=8443"/>
		<updated>2016-10-07T07:06:15Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8442</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8442"/>
		<updated>2016-10-07T07:05:54Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на три типа: Push_Notifications, App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
'''Push_Notifications'''&lt;br /&gt;
&lt;br /&gt;
Для уведомлений типа &amp;quot;Вы не заходили в игру N дней&amp;quot; добавлено состояние объекту notification, чтобы слать только в вайбер. &lt;br /&gt;
&lt;br /&gt;
Установка уведомлений (объект notification):&lt;br /&gt;
 Состояние&lt;br /&gt;
 &amp;quot;set&amp;quot;, - оба способа&lt;br /&gt;
 &amp;quot;set_native&amp;quot;, - устройство&lt;br /&gt;
 &amp;quot;set_parse&amp;quot;, - парс&lt;br /&gt;
 или через параметр&lt;br /&gt;
 &amp;lt;property name=&amp;quot;отсылать в&amp;quot; type=&amp;quot;enum&amp;quot; value=&amp;quot;0&amp;quot; id=&amp;quot;send&amp;quot; hint=&amp;quot;отсылать в&amp;quot; regexp=&amp;quot;обе службы=0,только локальный пуш=1,только парс=2&amp;quot; /&amp;gt; (тогда состояние set)&lt;br /&gt;
&lt;br /&gt;
Отправка этих уведомлений реализована через машину состояний. Перед вызовом состояния &amp;quot;set_parse&amp;quot; &lt;br /&gt;
[[Файл:viber_url.png]]&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8441</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8441"/>
		<updated>2016-10-06T15:32:49Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Уведомления для Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8440</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8440"/>
		<updated>2016-10-06T15:32:07Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. '''В версии Вайбера социалка всего одна!''' Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8439</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8439"/>
		<updated>2016-10-06T15:29:52Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
&lt;br /&gt;
'''1. логин в Вайбер'''&lt;br /&gt;
&lt;br /&gt;
'''2. играть, как гость'''&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst, после чего, в машине-обработчике исошиала, на успех логина, переходим на главный экран.&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8438</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8438"/>
		<updated>2016-10-06T15:28:11Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попасть на экран с предложением залогиниться в Вайбер, в случае, если это первая сессия или мы не были залогинены раньше. Если были залогинены - попадаем сразу на главный экран.&lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8437</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8437"/>
		<updated>2016-10-06T15:26:02Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook fb_login=1, для объекта gamecenter gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8436</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8436"/>
		<updated>2016-10-06T15:25:04Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Статистка adjust */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook- fb_login=1, для объекта gamecenter- gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывfем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки в объекте Esocial:'''&lt;br /&gt;
Для отправки событий Adjust в объекте исошиал нужно указать: нужно указать: &amp;quot;включить adjust&amp;quot; - да, далее указать названия событий для маркетов андроид и иос:&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для iOS&amp;quot;      type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_ios&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;property name=&amp;quot;инвайт для Ansroid&amp;quot;  type=&amp;quot;string&amp;quot; value=&amp;quot;&amp;quot; id=&amp;quot;adjinvite_andrd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8435</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8435"/>
		<updated>2016-10-06T15:20:22Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!!!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook- fb_login=1, для объекта gamecenter- gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера делятся на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!! Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8434</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8434"/>
		<updated>2016-10-06T15:19:47Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки инвайта и отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
'''Важно!''' Во всех проектах для market=&amp;quot;android&amp;quot; существует две социалки: Фейсбук, Гугл+. Для корректной работы социалки мы всегда проверяем 2 параметра: у объекта facebook- fb_login=1, для объекта gamecenter- gc_login_google=1. В версии Вайбера социалка всего одна! Очень важно во всем лейауте убрать проверку на gc_login_google = 1.&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
пуши, урлы картинок,&lt;br /&gt;
 &lt;br /&gt;
Уведомления для Вайбера деляться на два типа: App to users, User to user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8433</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8433"/>
		<updated>2016-10-06T15:09:43Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
&lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
&lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8432</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8432"/>
		<updated>2016-10-06T15:08:56Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. &lt;br /&gt;
&lt;br /&gt;
'''Поля у обекта Esocial в сетсах''':&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
 &amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8431</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8431"/>
		<updated>2016-10-06T15:08:28Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. Поля у обекта Esocial в сетсах:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;quot;изменить состояние объекта - гифт отослан&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8430</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8430"/>
		<updated>2016-10-06T15:07:31Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. Поля в сетсах:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_invite_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
 &amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
 &amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				&lt;br /&gt;
 &amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_gift_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
 &amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
 &amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				&lt;br /&gt;
 &amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8429</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8429"/>
		<updated>2016-10-06T15:06:19Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. Поля в сетсах:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_invite_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					 &amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					 &amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				 &amp;lt;/property&amp;gt;&lt;br /&gt;
				 &amp;lt;property name=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_gift_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					 &amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					 &amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				 &amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8428</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8428"/>
		<updated>2016-10-06T15:05:48Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
Социалка в Вайбере реализована по типу фейсбука. Вся логика и проверки на логин осуществляются через параметр fb_login объекта фб.&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
По тапу на кнопку (1) передаем объекту Esocial состояние friends_not_inst&lt;br /&gt;
По тапу на кнопку (2) осуществляется переход на главный экран.&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
Логин в Вайбер осуществляется: из экрана логина, из окна настроек, из окон социалки, (для Mystery_City - дополнительно из башни Вайбера на карте).&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера при приглашении друзей есть ограничения: можно приглашать одного друга один раз в сутки. Поэтому добавляем функционал - удаление приглашенного друга из списка неиграющих друзей (перезаполняем таблицу на успех отправки инвайта).&lt;br /&gt;
Так же есть ограничения на отправку инвайтов нескольким друзьям одновременно (всегда в таблице должен быть выбран только один друг!). &lt;br /&gt;
При открытии вкладки с не играющими друзьями, по умолчанию, всегда должен быть выбран первый друг.&lt;br /&gt;
Если в таблицах друзей/подарков не выбрана ячейка - кнопки ивайта/отправки подарков должны быть забизейблены.&lt;br /&gt;
В Вайбере нет системных окон подтверждения отправки инвайта/подарка (любого игрового сообщения), поэтому нужно добавить уведомления об успешной отправке инвайтов/подарков. Поля в сетсах:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property name=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_invite_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - инвайт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/property&amp;gt;&lt;br /&gt;
				&amp;lt;property name=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot; type=&amp;quot;add&amp;quot;    id=&amp;quot;nst_gift_sent&amp;quot;  label=&amp;quot;изменить состояние объекта - гифт отослан&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;property name=&amp;quot;объект&amp;quot;       type=&amp;quot;objid&amp;quot;      id=&amp;quot;obj&amp;quot;  label=&amp;quot;объект  - состояние которого меняем&amp;quot; hint=&amp;quot;изменить состояние объекта - инвайт отослан.&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;property name=&amp;quot;состояние&amp;quot;    type=&amp;quot;string&amp;quot;     id=&amp;quot;st&amp;quot;   label=&amp;quot;состояние - значение нового состояния.&amp;quot;  hint=&amp;quot;Новое состояние для объекта из предыдущего поля.&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8427</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8427"/>
		<updated>2016-10-06T14:48:48Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Экран логина в Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
После дозагрузки графики мы должны попадать на экран с предложением залогиниться в Вайбер. &lt;br /&gt;
На экране должны быть расположены две кнопки:&lt;br /&gt;
1. логин в Вайбер&lt;br /&gt;
2. играть, как гость&lt;br /&gt;
&lt;br /&gt;
Т.к. возможность залогиниться в социалку появляется до попадания на главный экран с картой, нужно расшарить на экран логина сцену с Esocial. &lt;br /&gt;
В сцене должен быть сам объект Esocial, машина-обработчик от исошиала на успех задачи, erorrmanager, окно ошибок.&lt;br /&gt;
&lt;br /&gt;
Объект фб должен быть расположен на глобальном экране с опциями, выше других объектов для первоочередной инициализации. Это сделано для сохранения сессии логина с предыдущих сессий: если мы были залогинены раньше, при инициализации объекту фб записывается параметр fb_login = 1. &lt;br /&gt;
&lt;br /&gt;
При первом логине в Вайбер дается награда.&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8426</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8426"/>
		<updated>2016-10-06T14:34:21Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Обязательные для рассинхронизации объекты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter - новые ключи для ачивок&lt;br /&gt;
&lt;br /&gt;
store - новые ключи для покупок&lt;br /&gt;
&lt;br /&gt;
statistic - отправка статистики в Adjust&lt;br /&gt;
&lt;br /&gt;
errormanager - добавление ошибки - запрет пользователем инвайтов и дарения подарков&lt;br /&gt;
&lt;br /&gt;
esocial &lt;br /&gt;
&lt;br /&gt;
cloud&lt;br /&gt;
&lt;br /&gt;
объекты, в которых меняется графика&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8425</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8425"/>
		<updated>2016-10-06T14:31:53Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS''': При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8424</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8424"/>
		<updated>2016-10-03T13:54:28Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS: При сборке .ipa, для корректной работы Appodeal, необходимо добавить перечень библиотек (сейчас они добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)'''&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8423</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8423"/>
		<updated>2016-10-03T13:53:51Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS: При сборке .ipa, для корректной работы Appodeal, необходимо добавить библиотеки (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)'''&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8422</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8422"/>
		<updated>2016-10-03T13:52:45Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Важно!!!'''&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS: При сборке .ipa для корректной работы Appodeal необходимо добавить библиотеки (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)'''&lt;br /&gt;
&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8421</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8421"/>
		<updated>2016-10-03T13:50:16Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
'''Только для IOS!''': Добавление библитотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8420</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8420"/>
		<updated>2016-10-03T13:43:32Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
Добавление библитотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8419</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8419"/>
		<updated>2016-10-03T13:42:43Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Социалка Viber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
=Настройки app.icf=&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых (перезаполнение таблицы на успех отправки инвайта), нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбере нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
Добавление библитотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8418</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8418"/>
		<updated>2016-10-03T13:41:06Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
=Настройки app.icf=&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых, нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбера нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
Добавление библитотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провайдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8417</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8417"/>
		<updated>2016-10-03T13:41:00Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
=Настройки app.icf=&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых, нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбера нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
Добавление библитотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провейдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8416</id>
		<title>Подготовка версии для Viber</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%9F%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_%D0%B4%D0%BB%D1%8F_Viber&amp;diff=8416"/>
		<updated>2016-10-03T13:40:47Z</updated>

		<summary type="html">&lt;p&gt;Evereskun: /* Реклама. Провайдер appodeal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;При создании версии для Viber большая часть проекта остается идентичной основному проекту, но существуют некоторые различия. Поэтому для Viber лучше использовать отдельный синхронизированный лейаут. &lt;br /&gt;
&lt;br /&gt;
В первую очередь это важно для замены используемой графики на графику, предоставленную вайбером. Для этого необходимо рассинхронизировать объект, используя параметр:&lt;br /&gt;
синхронизация (sync) и заменить графику только в конкретном лейауте. &lt;br /&gt;
&lt;br /&gt;
Версия для Viber должна быть подготовлена для двух платформ - google, ios.&lt;br /&gt;
&lt;br /&gt;
Кроме отличий в самом проекте, также есть отличия при сборке проекта. Эти особенности также будут описаны ниже, но на данный момент эти отличия применяются автоматически при сборке через артефактори.&lt;br /&gt;
&lt;br /&gt;
=Общие настройки=&lt;br /&gt;
&lt;br /&gt;
Для версии на viber необходимо завести новые '''ключи для покупок, ачивок, лидербордов (cloud)'''.&lt;br /&gt;
&lt;br /&gt;
По требованию Вайбера нужно добавить '''сплеш-видео''' от Viber.&lt;br /&gt;
&lt;br /&gt;
Теперь есть возможность после/вместо нашего обычного сплеша показывать сплеш-видео. Файл должен называться splash.ogv и лежать рядом с platform.icf. Видео может быть любого размера (оно впишется в границы экрана). Первый кадр из видео берется в качестве фона (растягивается так, чтоб закрыть &amp;quot;уши&amp;quot;), видео проигрывается поверх фона.&lt;br /&gt;
&lt;br /&gt;
=Настройки app.icf=&lt;br /&gt;
Для изменения логики в лейауте (например, для настройки перехода на экран с логином в Viber) можно использовать параметр, предварительно записав его в конфигурационный файл app.icf. Он запишется в опции пользователя при старте приложения.&lt;br /&gt;
Проверяя значение этого параметра, реализуем нужную логику. На данный момент такую проверку можно делать в машине состояний, а также в таскорганайзере.&lt;br /&gt;
&lt;br /&gt;
 [Parameters]&lt;br /&gt;
 param1_name=&amp;quot;viber_social&amp;quot;&lt;br /&gt;
 param1_value=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Основные настройки и симулятор под виндой:'''&lt;br /&gt;
 [s3eViber]&lt;br /&gt;
 appID   - ID приложения в вибере&lt;br /&gt;
 appIdentifier  - &lt;br /&gt;
 # debug&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
 #viberToken токен для симулятора под виндой &amp;quot;&amp;quot; берем из логов устройства &amp;quot;viberToken&amp;quot;&lt;br /&gt;
 # release&lt;br /&gt;
 #viberPostURL=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Экран логина в Viber=&lt;br /&gt;
положение fb в дереве проекта,&lt;br /&gt;
реакция на логин, кнопка Гость&lt;br /&gt;
&lt;br /&gt;
=Социалка Viber=&lt;br /&gt;
(по типу фб), башня на карте, логин из настроек, из башни, из окон социалки. Ограничение приглашений друзей в день, удаление из списка приглашаемых, нельзя!!! отправлять инвайты одновременно нескольким друзьям, уведомления об отправке инвайтов, подарков (т.к. в вайбера нет системного окна подтверждения отправки игрового сообщения, как в фб), disable кнопок пригласить при открытии окон, подарок за первый логин&lt;br /&gt;
&lt;br /&gt;
Иконка для таска логина в вайбер&lt;br /&gt;
&lt;br /&gt;
=Уведомления для Viber=&lt;br /&gt;
пуши, урлы картинок, уведомления:&lt;br /&gt;
App to users,   User to user&lt;br /&gt;
&lt;br /&gt;
=Статистка adjust=&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Statistiс:'''&lt;br /&gt;
Для того , чтобы событие отправилось в Adjust в объекте статистики в настройке события ставим флажочек трэкать в Adjust (он отдельно от остальных систем). Так как для разных платформ имена событий разные в настройках события есть поле &amp;quot;не отображать в маркетах&amp;quot;, куда нужно поместить текстовые айди из текстовой базы содержащие название маркета(для андроида - android, для иоса - ios)&lt;br /&gt;
&lt;br /&gt;
'''Настройки в объекте Store:'''&lt;br /&gt;
для трэкинга покупок в объекте стора есть группа параметров adjust, где нужно указать: &amp;quot;включить adjust&amp;quot; - да&lt;br /&gt;
,а далее указывем имена событий для покупок под андроид и иос.&lt;br /&gt;
 &lt;br /&gt;
'''Настройки app.icf:'''&lt;br /&gt;
 [ADJUST]&lt;br /&gt;
 AndroidAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 IOSAppToken=&amp;quot;&amp;quot;&lt;br /&gt;
 Environment=&amp;quot;sandbox&amp;quot; - sandbox - для тестирования, production - для релиза . Главное не забыть поменять перед заливкой и не использовать production для тестирования&lt;br /&gt;
 LogLevel=&amp;quot;verbose&amp;quot; - уровень логов , где: &lt;br /&gt;
 // &amp;quot;verbose&amp;quot; - enable all logging&lt;br /&gt;
 // &amp;quot;debug&amp;quot; - enable more logging&lt;br /&gt;
 // &amp;quot;info&amp;quot; - the default&lt;br /&gt;
 // &amp;quot;warn&amp;quot; - disable info logging&lt;br /&gt;
 // &amp;quot;error&amp;quot; - disable warnings as well&lt;br /&gt;
 // &amp;quot;assert&amp;quot; - disable errors as well&lt;br /&gt;
&lt;br /&gt;
=Реклама. Провайдер appodeal=&lt;br /&gt;
'''Настройки в app.icf:'''&lt;br /&gt;
&lt;br /&gt;
 [APPODEALADS]&lt;br /&gt;
 AppKeyAndroid=&amp;quot;&amp;quot; - ключ для андроида&lt;br /&gt;
 AppKeyIOS=&amp;quot;&amp;quot; - ключ для иоса&lt;br /&gt;
 далее включаем нужную рекламу &lt;br /&gt;
 interstitial=1 &lt;br /&gt;
 banner_top=1&lt;br /&gt;
 banner_bottom=1&lt;br /&gt;
 rewarded=1&lt;br /&gt;
&lt;br /&gt;
Добавление библтотек при сборке .ipa (сейчас добавляются автоматически, если в app.icf встречаются настройки провейдера Appodeal)&lt;br /&gt;
&lt;br /&gt;
=Обязательные для рассинхронизации объекты=&lt;br /&gt;
gamecenter,&lt;br /&gt;
store,&lt;br /&gt;
statistic,&lt;br /&gt;
errormanager (из-за ошибки - запрета пользователем инвайтов и дарения подарков),&lt;br /&gt;
esocial,&lt;br /&gt;
cloud?,&lt;br /&gt;
объекты с неподходящей графикой&lt;/div&gt;</summary>
		<author><name>Evereskun</name></author>
		
	</entry>
</feed>