2012-04-07 53 views
1

我目前正在开发,并提出以下问题: 如何/应该如何存储基本信息,例如设备之间未锁定的项目和级别。 当然,我将它们存储在首选项文件中。在设备之间同步信息的推荐方式

但是如果用户买了一部新手机并想继续在那玩呢? (共享)首选项不会重复。

因此,有没有(谷歌)推荐的方式(云?)来解决这个问题?

+0

实现一个[备份代理](http://developer.android.com/guide/topics/data/backup.html)将允许您保留电话之间的配置,如果用户不做傻事 - 比如改变他的谷歌帐户用于市场。 – Jens 2012-04-07 22:06:22

回答

1

我不是专家,但我这样做的方式是在线SQL数据库。让设备连接到它,并保存/加载您需要的任何数据。我知道这不适用于文件,只适用于基于文本的信息。我也使用Flash来做到这一点。如果这是你的路线,我可以分享一些代码。好吧,所以你需要3件事情,如果你在Flash中做这个:Flash(duh),PHP文件和一个SQL服务器(我有一个MYSQL服务器)。

它将如何工作是闪存将加载PHP,PHP将做它的事情(如更改数据库),并吐出它的结果闪光。

比方说,我们想要从数据库中获取所有用户名。

数据库

表的名字叫做 “玩家” 与所谓的 “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文件和数据库在同一台主机上,这样我就可以做“localhost”作为主机名

<?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 2012-04-07 20:31:17

1

我认为最好的方式是维护在线数据库,并定期更新每个注册用户的最新信息。因此,不是将所有内容都存储在本地,它可以存储在远程服务器上,并在需要时发送给用户。所以只要用户拥有自己为应用程序创建的帐户,就不会丢失任何数据。