2012-04-07 2 views
1

Я сейчас развиваюсь, и я подошел к следующему вопросу: Как я могу хранить основные сведения, такие как разблокированные элементы и уровни между устройствами. Конечно, я храню их в файлах настроек.Рекомендуемый способ синхронизации информации между устройствами

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

Таким образом, существует ли какой-либо (от google) рекомендованный способ (облако?), Чтобы решить эту проблему?

+0

Реализация [резервного агента] (http://developer.android.com/guide/topics/data/backup.html) позволит вам сохранить конфигурацию между телефонами, если пользователь не сделает что-то глупое - как изменение его учетная запись google используется для Market. – Jens

ответ

1

Я не эксперт, но способ, которым я это делаю, - это база данных онлайн SQL. Подключите устройство к нему и сохраните/загрузите нужные данные. Я знаю, что это не будет работать с файлами, а только с текстовой информацией. Я также делаю это с помощью Flash. Если это ваш маршрут, я могу поделиться некоторым кодом.

Итак, вам нужно 3 вещи, если вы делаете это во Flash: Flash (duh), файлы PHP и SQL-сервер (у меня есть сервер MYSQL).

Как это работает, Flash загрузит php, php сделает это (например, внесение изменений в базу данных) и вертел его результаты, чтобы вспыхнуть.

Предположим, мы хотим получить все имена пользователей из базы данных.

Database

Имя таблицы называется "Игроки" с одной колонке под названием "u_id"

флэш

var loader:URLLoader; //makes a loader that will "load" the php page 

public function DoIt() 
{ 
    loader = new URLLoader(); 
    loader.addEventListener(Event.COMPLETE, loaderComplete); 
    loader.load(new URLRequest("http://yourDomain.com/thePHPFile.php?arg=42")); 
} 

public function loaderComplete(e:Event):void 
{ 
    var returnXML:XML; //we are assuming the return values are in xml format, trust me, this might be easier 

    for each (var ListItem:XML in returnXML..Users) //you might need to change this "users" to be the root of the xml file 
    { 
     var userName:String = ListItem.u_id.toString(); 
     //you can do what you want with the data here 
    } 
} 

PHP

Теперь это может не потребоваться d, но я стараюсь, чтобы убедиться в PHP файлы и БД на том же хосте, так что я могу сделать «локальный» в качестве имени хоста

<?php 

    $argumentVar = $_GET["arg"]; //not using this, just showing it's possible 
    $connect = mysql_connect("localhost", "db_username", "db_password"); 

    if(!$connect) 
    { 
     die("error connecting to DB" . mysql_error()); 
    } 

    $db_selected = mysql_select_db("the_name_of_the_db", $connect); 

    if(!$db_selected) 
    { 
     die("error selecting db" . mysql_error()); 
    } 

    $table_name = "Players" //this is the name of your database 
    $sql = "SELECT * FROM $table_name;"; //not sure if you need ending ';' 

    $dbresult = mysql_query($sql, $connect); //this is where all your data comes into 

    //and now to save all the information to a xml file 
    $doc = new DOMDocument('1.0'); 
$root = $doc->createElement('root'); 
$root = $doc->appendChild($root); 

    while($row = mysql_fetch_assoc($dbresult)) 
{ 
    $occ = $doc->createElement($table_name); 
    $occ = $root->appendChild($occ); 

    foreach ($row as $fieldname => $fieldvalue) 
    { 
     $child = $doc->createElement($fieldname); 
     $child = $occ->appendChild($child); 

     $value = $doc->createTextNode($fieldvalue); 
     $value = $child->appendChild($value); 
    } 
} 

$xml_string = $doc->saveXML(); 
echo $xml_string; 
?> 

Ладно, иди играть с этим, он должен начать вас на правильном пути.

+0

Совместное использование кода в любом случае было бы замечательным :) ([email protected], когда личное) – poitroae

1

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

Смежные вопросы