
简介:UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。在很多需要限制一台设备一个账号的应用中经常会用到。在iOS5中可以获取到设备的UDID,iOS7中已经完全的禁用了它。iOS7之前的使用了的app如果在iOS7上运行,它不会返回设备的UDID,而是会返回一串字符串,以FFFFFFFF开头,跟着identifierForVendor的十六进制值。
获取:[[UIDevice currentDevice] uniqueIdentifier]
废弃:iOS6
简介:iOS 60系统新增用于替换uniqueIdentifier的接口。是给Vendor标识用户用的,每个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是通过BundleID的DNS反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于comsomecompanyappone,comsomecompanyapptwo这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID。如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。
获取:[[[UIDevice currentDevice] identifierForVendor] UUIDString]
适用:iOS60+
例子:95955F33-BFBD-48BA-A630-866D2DAE482D
简介:广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。但如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广 告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置 -> 隐私 -> 广告追踪 里重置此id的值,或限制此id的使用。
获取:[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
适用:iOS60+
例子:9C287922-EE26-4501-94B5-DDE6F83E1475
简介:MAC地址在网络上用来区分设备的唯一性,接入网络的设备都有一个MAC地址,他们肯定都是不同的,是唯一的。一部iPhone上可能有多个MAC地址,包括WIFI的、SIM的等,但是iTouch和iPad上就有一个WIFI的,因此只需获取WIFI的MAC地址就好了,也就是en0的地址。MAC地址就如同我们身份z上的身份z号码,具有全球唯一性。但在iOS7之后,如果请求Mac地址都会返回一个固定值。
废弃:iOS70+
获取:
简介:iOS整个系统有一个KeyChain,每个程序都可以往KeyChain中记录数据,而且只能读取到自己程序记录在KeyChain中的数据。而且就算我们程序删除掉,系统经过升级以后再安装回来,依旧可以获取到与之前一致的UDID(系统还原、刷机除外)。因此我们可以将UUID的字符串存储到KeyChain中,然后下次直接从KeyChain获取UUID字符串。(本示例中使用KeychainItemWrapper工具类)
获取:
简介:虽然苹果在iOS6中禁用了获取uuid的方式,但是只要你研究下就知道这个API只是私有化了,使用私有API还是可以获取设备的uuid。但是这个方面也面临着风险:比如API变更以及AppStore审核问题,但是在越狱设备上你还是可以尽情享用的。
类:AADeviceInfo(dump出头文件)
获取:[AADeviceInfo udid]
使用方法:在项目中将真机上的AppleAccountframework框架导出,引入Xcode工程中,利用runtime或者直接使用该类就行。(细节补充:导出AppleAccountframework后,进入AppleAccountframework的根目录,新建Headers文件夹,然后将dump出的头文件放在Headers目录,就可以像引用第三方framework一样在项目中使用)
悬浮窗。获取关闭按钮的id或bounds方法如下:
1、首先需要打开boends,开启悬浮窗。
2、打开想要获取控件ID的APP,点开autojs的悬浮窗,选择布局范围分析,最后点击想要获取ID的控件即可。
只要使用getAttribute("id")函数即可获取li元素的id值,下面我们一起实例 *** 作一下吧
首先我们在html当中创建li标签
使用JS获取li元素对象,getElementsByTagName("li")
3接着我们打印出这样的运行效果看一下:
4使用JS获取li元素的ID 值即可,getAttribute("id")
5下面我们一起来看下运行效果
背景技术:
随着经济的飞速发展,快递包裹的业务量正在爆发式的增长,传统物流运作模式有些滞后,传统的地址编码方式无法适应快递行业的复杂配送环境,常常会给物流人员造成误导,同时大量的文字存在的记忆困难,增加了整个物流行业的人力成本和配送成本,也影响了整体配送效率。
现阶段未存在统一的快递包裹id编码方法,书写文字地址花费较多时间且容易出现书写错误以及书写障碍;此外,物流企业之间存在着自我认知编码规则,无法互相利用对方的id编码规则,导致无法实现运输成本最低和速度最快化。
因此,
本技术:
提出新的快递包裹id编码方法。
技术实现要素:
为解决上述问题,本发明的目的在于提供一种快递包裹id编码方法。该方法能够更快速、精确的表述包裹的投递目标,同时书写便利、并具备世界通用性原则,将快递包裹的目标地址进行编码,更便于分拣环节优化分拣通道,实现企业级分拣互联共享,进而降低运输成本。
为实现上述目的,本发明提供了如下的技术方案。
一种快递包裹id编码方法,包括以下步骤:
获取快递包裹目标地址,根据所述快递包裹目标地址通过定位系统获取对应的经纬坐标码;
将所述经纬坐标码分别转化成经度坐标码和纬度坐标码的度、分、秒的形式;所述度、分、秒之间用顿号间隔;
定义经度字母,e为东经、w为西经,以及纬度字母,n为北纬、s为南纬;
采用所述快递包裹目标地址的经纬坐标码进行编码,编码格式依次为经度字母、经度坐标码—纬度字母、纬度坐标码。
优选地,所述定位系统包括gps位置服务系统和北斗定位系统。
优选地,所述快递包裹目标地址至少精确为小区楼号或门牌号。
优选地,所述经度坐标码和纬度坐标码的有效长度分别为7位和6位;所述度、分、秒的有效数为整数。
优选地,还包括加密方法;所述加密方法为根据约定在所述快递包裹目标地址的经纬坐标码中加入或删除防伪数字。
优选地,所述快递包裹目标地址的经纬坐标码转化为二维码形式进行编码。
本发明有益效果:
本发明提出快递包裹id编码方法,其有益效果包括:便于书写,由于其书写的便利性,所需书写时间较短;同时,由于采用字母和数字,国际函件不会出现书写障碍;便于认知,因阿拉伯数字的经纬度地址码表述,有着世界认知与标识习惯的统一性,国际函件也不需要用多国语言书写;便于多接口应用,有着全球统一标准的一致性,gps位置服务信息坐标码被全世界应用,无论使用何种软件,获取的地址码都高度一致,有着相当程度的广泛性,进而实现软件套用的多接口应用;便于保密投递增值服务,根据约定需要采用中间加入或删除防伪数字混淆方式,实现包裹投递地址隐藏,为机要投递带来便利;便于多企共享运输分拣物流通道,现有编码规则每个公司都是根据物流通道自行编码,各大物流公司根据自己的分拣中转节点,分拣设备不同,进行自我认知编码规则,造成各大公司人员与设备冗余,不能相互利用实现运输成本最低,速度最快化。
以下结合附图及实施例对本发明作进一步的说明。
附图说明
图1是本发明实施例的快递包裹id编码方法的工作流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例
一种快递包裹id编码方法,如图1所示,包括以下步骤:
获取快递包裹目标地址,根据快递包裹目标地址通过定位系统获取对应的经纬坐标码;
将经纬坐标码分别转化成经度坐标码和纬度坐标码的度、分、秒的形式;度、分、秒之间用顿号间隔;
定义经度字母,e为东经、w为西经,以及纬度字母,n为北纬、s为南纬;
采用快递包裹目标地址的经纬坐标码进行编码,编码格式依次为经度字母、经度坐标码—纬度字母、纬度坐标码。
进一步的,定位系统包括gps位置服务系统和北斗定位系统。
较佳的,快递包裹目标地址至少精确为小区楼号或门牌号。
优选的,经度坐标码和纬度坐标码的有效长度分别为7位和6位;度、分、秒的有效数为整数。
此外,还包括加密方法;加密方法为根据约定在快递包裹目标地址的经纬坐标码中加入或删除防伪数字。
另外,快递包裹目标地址的经纬坐标码转化为二维码形式进行编码。
本实施例中,
以山西省忻州市玫瑰苑10号楼为例,通过gps位置服务系统获取对应的经纬坐标码:东经坐标码为112、43、0,北纬坐标码为38、25、33,则整体编码为:e、112、43、0—n、38、25、33。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1一种快递包裹id编码方法,其特征在于,包括以下步骤:
获取快递包裹目标地址,根据所述快递包裹目标地址通过定位系统获取对应的经纬坐标码;
将所述经纬坐标码分别转化成经度坐标码和纬度坐标码的度、分、秒的形式;所述度、分、秒之间用顿号间隔;
定义经度字母,e为东经、w为西经,以及纬度字母,n为北纬、s为南纬;
采用所述快递包裹目标地址的经纬坐标码进行原有文字地址表述的取代替换编码,编码格式依次为经度字母、经度坐标码—纬度字母、纬度坐标码。
2根据权利要求1所述的快递包裹id编码方法,其特征在于,所述定位系统包括gps位置服务系统和北斗定位系统。
3根据权利要求1所述的快递包裹id编码方法,其特征在于,所述快递包裹目标地址至少精确为小区楼号或门牌号。
4根据权利要求1所述的快递包裹id编码方法,其特征在于,所述经度坐标码和纬度坐标码的有效长度分别为7位和6位;所述度、分、秒的有效数为整数。
5根据权利要求1所述的快递包裹id编码方法,其特征在于,还包括加密方法;所述加密方法为根据约定在所述快递包裹目标地址的经纬坐标码中加入或删除防伪数字。
6根据权利要求1-5任意一项所述的快递包裹id编码方法,其特征在于,所述快递包裹目标地址的经纬坐标码转化为二维码形式进行编码。
技术总结
本发明提供一种快递包裹ID编码方法,包括以下步骤:获取快递包裹目标地址,根据快递包裹目标地址通过定位系统获取对应的经纬坐标码;将经纬坐标码分别转化成经度坐标码和纬度坐标码的度、分、秒的形式;度、分、秒之间用顿号间隔;定义经度字母,E为东经、W为西经,以及纬度字母,N为北纬、S为南纬;采用所述快递包裹目标地址的经纬坐标码进行原有文字地址表述的取代替换编码,编码格式依次为经度字母、经度坐标码—纬度字母、纬度坐标码。该方法能够更快速、精确的表述包裹的投递目标,同时书写便利、并具备世界通用性原则;同时,此类编码方式更便于分拣环节优化分拣通道,实现企业级分拣互联共享,进而降低运输成本。
1、需要拉出来一个二层交换机和两个PC。如图。
2、接下来点击交换机 输入enable 回车,conf 回车,进去全局配置模式。
3、创建VLAN 输入VLAN 10[你要创建vlan的ID]。
4、假设我们现在要把创建好的vlan 10划分到F0/1端口这时候需要输入int fa0/1[进如F0/1端口]输入switchport access vlan 10 是把VLAN 10 划分到F0/1端口里面这时候就大功告成了 无论多少个VLAN 划分 指令都是一样的。
最近,因公司产品及客户需要,领导让我研究免存储设备ID,以及给出一个设备ID最佳的方案(可与存储相结合)。在研究过浏览器的fingerprient2js后,颇有心得,并且看网上似乎木有完美的解决方案,于是写了这篇文章,仅供需要的开发者参考。(该算法暂未进行验证,这里先给出一个jar包,后期我会在SDK中加入调查接口,分两个jar包(测试版和正式版),希望开发者能支持测试版,稳定后使用正式版。)
在产品中,首先肯定要尽量避免权限,其次考虑卸载APP后ID不一致的问题,再就是尽量结合存储,降低卸载或重装app时,设备ID改变的概率。最后,设计出合理方案,对造成不利的因素进行列举。
Aandroid_id:
什么是android_id呢?当设备在第一次启动时,系统会随机产生一个64位的数字,然后以16进制的形式保存在设备上,且API提供了获取这一参数的方法:
这就是android_id,当设备重新初始化或者刷机的时候,会被重置。
除此以外,android_id还有其他的bug,比如:
1不同的设备可能会产生相同的android_id。
2有的厂商设备无法获取android_id,会返回null。
3对于CDMA的设备,ANDROID_ID和TelephonyManagergetDeviceId() 的值相同。
4不同的android系统版本稳定性不同。
B硬件序列号(SERIAL)
API给的解释是:
A hardware serial number, if available(一个硬件的序列码,如果有效的话)
so,虽然我没有用几百台手机测试,也能知道这个值有时候是无效的,说的这么隐晦。
C指纹
fingerprint:设备的唯一标识。由设备的多个信息拼接合成。
也是在JavaScript才接触到这个单词”fingerprint“,这个词也很生动,意思是能大概的标识一个设备,像指纹一样,但不排除重复的可能性。
理论上讲用这个属性是可以标识一个设备的,但是其实并不是,两台一摸一样的新手机,这个值相同的可能性是很多的。为了更加进一步的精确,后面还会介绍几个属性,并把几个属性结合在一起,生成一个接近100%的UUID。
Dandroid系统提供了获取android系统版本号,生产厂商,固件版本推出时间的API
Eandroid系统提供了当前android设备是12或24小时制显示时间的API,
Fandroid系统提供了当前android设备的修订版本列表,显示屏,主板等等参数。
G可以允许用户根据需求用自定义字符串去为FP做贡献,比如IP地址等
方案:
在不需要用户权限的前提下,网上最完美的方案是将android_id和硬件序列号,如果其中任意一种失效就使用另外一种。受FingerPrint2js的启发,我看了Android获取系统硬件相关的API,将所有不经常变化且能代表一定用户群体的属性都取出来进行MD5运算,包含但不限于依据中所述的信息。准确性还需进一步验证,但理论上要比FingerPrint2js准确性高,也在网上给出的比较好的方案基础上进一步缩小了FP可能重复的概率。
1第一次进入APP时,获取系统相关配置信息生成FP,存入SP。
2每次访问,先从SP取,没有再通过相关配置信息生成FP,存入SP。
3封装成jar,只给用户暴露出获取ID的接口、传递自定义信息构建FP的接口以及第一次安装时间戳的接口(或设置标签调用的接口)
单纯对于FP而言,有两个主要问题需要解决,一是FP重复的问题,相同配置的新设备重复可能性极大,增多给FP贡献的因素的数量,可以有效降低重复率。二是FP改变的问题,贡献FP的生成因素的其中一个如果改变,FP就会改变。所以如果FP的贡献因素数量过多,导致FP改变的概率也就变大,所以说客户要在两者之间做一个很好的平衡。
对比:
为android FP做贡献的各配置参数:(示例以60的华为荣耀8为例)
1Android_ID:SettingsSystemgetString(contextgetContentResolver(), SettingsSystemANDROID_ID) //低版本稳定,高版本不稳定 示例:295a4fbf716094ee
2BuildSERIAL 设备序列号(有的设备无法获取) 示例:WTK7N16923005607
3BuildFINGERPRINT 设备指纹(同样的新设备该值应该是一样的) 示例:honor/FRD-AL00/HWFRD:60/HUAWEIFRD-AL00/C00B171:user/release-keys
4BuildTIME 固件推出日期 示例:1477442228000
5BuildVERSIONINCREMENTAL 源码控制版本号 示例: C00B171
6BuildgetRadioVersion() 获取无线电固件版本 示例:212100300031,212100300031
7BuildHARDWARE 硬件名称 示例:hi3650
8BuildVERSIONSECURITY_PATCH 用户可见安全补丁level(这里我得到的是日期,可能是补丁修复的时间)示例:2016-10-01
9当前设备是12/24时制:SettingsSystemgetString(contextgetContentResolver(), SettingsSystemTIME_12_24) 示例:null(有的手机可以获取)
10BuildVERSIONSDK_INT SDK版本号 (一般讲是与系统版本号一一对应的) 示例:23
11BuildSUPPORTED_32_BIT_ABIS 支持32位ABIs的列表(数值)示例:[armeabi-v7a,armeabi]
12BuildSUPPORTED_64_BIT_ABIS 支持64位ABIs的列表(数值)示例:[arm64-v8a]
13BuildBOOTLOADER 系统启动程序版本号 示例:unknown
14BuildVERSIONRELEASE 用户可见版本 示例: 60
16BuildBOARD 主板 示例:FRD-AL00
17BuildBRAND 系统定制商 示例:honor
21BuildHOST 示例:huawei-RH2288H-V2-12L
23BuildMANUFACTURER 产品/硬件的制造商 示例:HUAWEI
25BuildPRODUCT 产品的名称 示例:FRD-AL00
26BuildTAGS 描述Build的标签(Comma-separated tags describing the build, like "unsigned,debug") 示例:release-keys
28BuildUSER 描述Build的USER 示例:jslave
31BuildVERSIONBASE_OS 基带版本 The base OS build the product is based on 示例:空值
32自定义字符串或自定义数组
以上就是关于iOS获取设备ID总结全部的内容,包括:iOS获取设备ID总结、如何获取关闭按钮的id或bounds、js中如何获取一个id的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)