何时OPEN_UDID会变化

文章讨论了iOS设备唯一标识符(UDID)的变化及其替代方案。随着iOS7禁止使用UDID,介绍了OpenUDID作为替代品的特点及局限性,并探讨了在iOS6.0之后的标识符变化情况。
提问一: 
最近iOS7开始禁掉了UDID,我也在寻找替代方案,这里说下我知道的信息!
UDID与OpenUDID的不同之处
  • 每台iOS设备的UDID是唯一且永远不会改变;
  • 每台iOS设备的OpenUDID是通过第一个带有OpenUDID SDK包的App生成,如果你完全删除全部带有OpenUDID SDK包的App(比如恢复系统等),那么OpenUDID会重新生成,而且和之前的值会不同,相当于新设备;
是否足够替代
  • 普通的iOS设备用户不会没事就去恢复系统或者抹掉系统,所以一般OpenUDID的值是不会改变的;
  • 在iOS系统升级换代时,会产生较大的影响,毕竟95%以上的iOS设备用户都会选择升级到最新的系统;
是否足够替代就看你对UDID的需求是什么了,如果要求怎么都不能变,那OpenUDID可能还是不能满足你的需求!
提问二:
现阶段而言,这些方式可能都要改变,主要有以下几点:
1、iOS7中,已经无法访问mac地址,通过api访问mac地址得到的是 02:00:00:00这个,完全没用了;
2、以前的UDID的替换方式是 mac address + bundle identifer 然后md5生成的一个字串;
3、综上所述,OpenUDID 以及 UDID都不是最终的解决方案。 
提问三:
关于这个话题的缺点大家都知道,在此就总结一下,在整个过程中都诞生过哪些方案:
  • iOS 6.0以前(无任何限制)
此阶段完美方案: 使用UDID,唯一且永远不变,能满足我们的所有需求.
  • iOS 6.0~7.0之间(限制了UDID)                                                                                                                                                                                      
  •  上面大家解释的都比较清楚了。我想补充的是,我们需要唯一标识设备,还是标识app? 按照apple的政策,标识设备是不可以的,所以UDID,MAC都被禁止访问。我们要统计用户怎么办?OK标识app是可以的,用UUID可以实现,我理解OpenUDID就是一种UUID。可以被重新生成的ID。 
请问在一个common文件中有个方法是这样的,我已在其他文件导入了这个文件from lib.common import *,想调用关于这个gps类的open方法,请问如何调用,方法内容如下: class Switch: def __init__(self,sn=udid): self.sn = sn swith_sn[0] = self.sn class BT: @classmethod def open(cls): ADBHelper(swith_sn[0]).shell('svc bluetooth enable') @classmethod def close(cls): ADBHelper(swith_sn[0]).shell('svc bluetooth disable') class WIFI: @classmethod def open(cls): ADBHelper(swith_sn[0]).shell('svc wifi enable') @classmethod def close(cls): ADBHelper(swith_sn[0]).shell('svc wifi disable') class DATA: @classmethod def open(cls): ADBHelper(swith_sn[0]).shell('svc data enable') @classmethod def close(cls): ADBHelper(swith_sn[0]).shell('svc data disable') class NFC: @classmethod def open(cls): ADBHelper(swith_sn[0]).shell('svc nfc enable') @classmethod def close(cls): ADBHelper(swith_sn[0]).shell('svc nfc disable') class Airplane_Mode: @classmethod def open(cls): airplanemode = get_app_driver("com.android.settings", "com.android.settings.Settings$WirelessSettingsActivity",sn=swith_sn[0]) switch_button = airplanemode.find_element(By.ID, 'android:id/switch_widget') if switch_button.get_attribute('checked') == 'false': switch_button.click() time.sleep(1) else: return # ADBHelper().shell('settings put global airplane_mode_on 1') @classmethod def close(cls): airplanemode = get_app_driver("com.android.settings", "com.android.settings.Settings$WirelessSettingsActivity",sn=swith_sn[0]) switch_button = airplanemode.find_element(By.ID, 'android:id/switch_widget') if switch_button.get_attribute('checked') == 'true': switch_button.click() time.sleep(1) else: return # ADBHelper().shell('settings put global airplane_mode_on 0') class Display_auto: @classmethod def open(cls): ADBHelper(swith_sn[0]).shell('settings put system screen_brightness_mode 1') @classmethod def close(cls): ADBHelper(swith_sn[0]).shell('settings put system screen_brightness_mode 0') class GPS: @classmethod def open(cls): driver = get_app_driver('com.android.settings', 'com.android.settings.Settings$LocationSettingsActivity',sn=swith_sn[0]) GPS_switch_button = driver.find_element(By.ID, 'android:id/switch_widget') if GPS_switch_button.get_attribute('checked') == 'false': GPS_switch_button.click() try: driver.find_element(By.ID, 'android:id/button1').click() driver.find_element(By.ID, 'android:id/button1').click() except: pass else: return True @classmethod def close(cls): driver = get_app_driver('com.android.settings', 'com.android.settings.Settings$LocationSettingsActivity',sn=swith_sn[0]) GPS_switch_button = driver.find_element(By.ID, 'android:id/switch_widget') if GPS_switch_button.get_attribute('checked') == 'true': GPS_switch_button.click() else: return True
最新发布
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值