web应用程序中Android/Iphone设备数据的区别?

web应用程序中Android/Iphone设备数据的区别?,android,iphone,database-design,data-binding,Android,Iphone,Database Design,Data Binding,因此,我正在研究一个web应用程序的数据库架构,该应用程序还将开发android和iphone应用程序 为此,我想在mysql数据库中创建一个列名device\u id,以跟踪用户是否通过webapp或android app或iphone app使用该应用程序 以下是一些功能点: 创建/注册 可以通过web应用程序/android应用程序/iphone应用程序完成 登录 无论用户从何处创建,用户都可以基于web上的中央数据库(使用登录web服务)从all登录 问题域 没有任何事实,但我的

因此,我正在研究一个web应用程序的数据库架构,该应用程序还将开发android和iphone应用程序

为此,我想在
mysql数据库中创建一个列名
device\u id
,以跟踪用户是否通过webappandroid appiphone app使用该应用程序

以下是一些功能点:

创建/注册

  • 可以通过web应用程序/android应用程序/iphone应用程序完成
登录

  • 无论用户从何处创建,用户都可以基于web上的中央数据库(使用登录web服务)从all登录
问题域

没有任何事实,但我的一些技术团队建议:

IphoneAndroid那些将提供UDIDAndroid\u-ID的早期版本在未来的版本中不会这样做

现在,

移动应用程序即使没有互联网连接也能正常工作,因此我开发了一个同步工具,它可以通过点击按钮将设备到网络网络到设备上的数据同步

某些情况可能包括同一用户,该用户正在使用来自不同设备和web的应用程序,以便数据在设备和web上无缝同步

因此,什么是最好的解决办法,我可以自动生成一些独特的序列,而不依赖设备id的同步过程

---编辑---

在工厂重置和根设备时,确保设备不会 返回一个唯一的Id,还有各种开发公司 致力于android定制,因此这并不能保证 唯一的设备id。那么,我怎样才能找到更好的解决办法呢 逻辑在我这边,网络也一样


您正处于同步过程的正确轨道上

设备UDID(用于iPhone)和Android_ID(用于Android)仅用于推送通知

您可以在没有此功能的情况下实现同步过程

为此,您需要遵循以下步骤:

1) 当应用程序第一次在设备(iPhone/Android)中打开时,然后在服务器上传递空白(“”)日期。所以它会给你所有的数据

2) 将所有数据存储在本地数据库中以供脱机使用。并在本地存储服务器日期

3) 现在,当用户下次打开应用程序时,将以前存储的数据传递到服务器上,它将只提供最新添加/更新的数据

4) 在本地数据库中进行必要的更改添加/编辑

5) 这样,您将在web和两个应用程序(iPhone和Android)中拥有相同的数据

6) 当用户对本地数据进行更改时,在本地数据库中将其位设置为“TRUE”。所以,当下次执行同步时,请检查设置的位并将所有数据上载到服务器

7) 因此,所有网络、iphone和android上的数据都将是最新的

希望你有个主意

快乐编码


干杯

您正处于同步过程的正确轨道上

设备UDID(用于iPhone)和Android_ID(用于Android)仅用于推送通知

您可以在没有此功能的情况下实现同步过程

为此,您需要遵循以下步骤:

1) 当应用程序第一次在设备(iPhone/Android)中打开时,然后在服务器上传递空白(“”)日期。所以它会给你所有的数据

2) 将所有数据存储在本地数据库中以供脱机使用。并在本地存储服务器日期

3) 现在,当用户下次打开应用程序时,将以前存储的数据传递到服务器上,它将只提供最新添加/更新的数据

4) 在本地数据库中进行必要的更改添加/编辑

5) 这样,您将在web和两个应用程序(iPhone和Android)中拥有相同的数据

6) 当用户对本地数据进行更改时,在本地数据库中将其位设置为“TRUE”。所以,当下次执行同步时,请检查设置的位并将所有数据上载到服务器

7) 因此,所有网络、iphone和android上的数据都将是最新的

希望你有个主意

快乐编码


干杯

猜测您已经完成了同步过程(@Nishant B's post),现在,对于Unique ID,这里的代码片段几乎适用于所有安卓设备(Tab+Mobile)

现在你知道,Android中没有任何唯一ID的保证,所以最好创建一个密钥,它将在每次生成时生成多个密钥和唯一的组合

TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE

String m_szDevIDShort = "35" + //we make this look like a valid IMEI
Build.BOARD.length()%10+ Build.BRAND.length()%10 +
Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 + Build.TYPE.length()%10 +
Build.USER.length()%10 ; //13 digits


WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);

BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();


String m_szLongID = m_szImei + m_szDevIDShort + m_szWLANMAC + m_szBTMAC;
// compute md5
MessageDigest m = null;
try {
     m = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

m.update(m_szLongID.getBytes(),0,m_szLongID.length());
// get md5 bytes
byte p_md5Data[] = m.digest();
// create a hex string
String m_szUniqueID = new String();

for (int i=0;i<p_md5Data.length;i++) {
        int b = (0xFF & p_md5Data[i]);
// if it is a single digit, make sure it have 0 in front (proper padding)
if (b <= 0xF) m_szUniqueID+="0";
// add number to string
     m_szUniqueID+=Integer.toHexString(b);
}

// hex string to uppercase
m_szUniqueID = m_szUniqueID.toUpperCase();
TelephonyManager TelephonyMgr=(TelephonyManager)getSystemService(电话服务);
字符串szImei=TelephonyMgr.getDeviceId();//需要读取\u电话\u状态
字符串m_szDevIDShort=“35”+//我们使它看起来像一个有效的IMEI
Build.BOARD.length()%10+Build.BRAND.length()%10+
Build.CPU_ABI.length()%10+Build.DEVICE.length()%10+
Build.DISPLAY.length()%10+Build.HOST.length()%10+
Build.ID.length()%10+Build.MANUFACTURER.length()%10+
Build.MODEL.length()%10+Build.PRODUCT.length()%10+
Build.TAGS.length()%10+Build.TYPE.length()%10+
Build.USER.length()%10//13位
WifiManager wm=(WifiManager)getSystemService(Context.WIFI_服务);
BluetoothAdapter m_BluetoothAdapter=null;//本地蓝牙适配器
m_BluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
字符串m_szBTMAC=m_BluetoothAdapter.getAddress();
字符串m_szWLANMAC=wm.getConnectionInfo().getMacAddress();
字符串m_szLongID=m_szImei+m_szDevIDShort+m_szWLANMAC+m_szBTMAC;
//计算md5
MessageDigest m=null;
试一试{
m=MessageDigest.getInstance(“MD5”);
}捕获(无算法异常){
e、 printStackTrace();
}
m、 更新(m_szLongID.getBytes(),0,m_szLongID.length());
//获取md5字节
字节p_md5Data[]=m.digest();
//创建一个十六进制字符串
字符串m_szUniqueID=新字符串();

对于(int i=0;i猜测您已经完成了同步过程(@Nishant B's post),现在对于Unique ID,这里是几乎适用于所有安卓设备(Tab+Mobile)的代码片段<