web应用程序中Android/Iphone设备数据的区别?
因此,我正在研究一个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登录 问题域 没有任何事实,但我的
mysql数据库中创建一个列名device\u id
,以跟踪用户是否通过webapp或android app或iphone app使用该应用程序
以下是一些功能点:
创建/注册
- 可以通过web应用程序/android应用程序/iphone应用程序完成
登录
- 无论用户从何处创建,用户都可以基于web上的中央数据库(使用登录web服务)从all登录
问题域
没有任何事实,但我的一些技术团队建议:
Iphone和Android那些将提供UDID和Android\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)的代码片段<