SDK最终都是会被集成到硬件设备中提供服务 , 尤其是AI公司的技术方案 , 不管是视觉还是语音 , 最后交付的都是硬件产品 。
通常激活的时机 , 都是在硬件设备进行第一次启动的时候进行 。
SDK的激活涉及到我方对客户的计费 , 所以激活逻辑的设计要非常的仔细和严谨(毕竟都是钱哪 。。)
一般来说 , SDK的激活方案可以分为三种(以下说法参考思必驰的产品授权方案):
预烧录预登记动态注册
预烧录 , 指的是 , 我们后台预先生成授权的license文件 , 然后预先写入硬件设备的存储文件中 。在设备首次启动的时候 , 就直接调取license文件进行激活 。这种方式适用于需要不联网提供服务的场景 。
预登记 , 指的是 , 预先登记设备白名单 , 以用户设备注册激活的一种授权方式 。这种方式适用于客户提前知道所需授权设备的设备标识的场景
动态注册 , 指的是 , 每次设备激活 , 后台动态给这些设备进行激活并注册的一种形式 。这种方式适用于客户可以提供设备的唯一标识 , 但是提前不知道哪些设备需要授权 , 不知道有多少设备需要授权的场景 。
下面想主要讲一下 , 我在设计预登记和动态注册时遇到的一些坑 。
3.1 预登记对我方友好 , 但是对客户不太灵活
预登记方式其实对我方来说是比较友好的 , 因为客户提前提供准确的设备唯一标识的时候 , 我们可以很方面的进行激活和统计 , 说直白点 , 就是方便收钱 。
所以 , 客户为了省钱 , 有可能采取作弊策略:将一个设备的唯一标识给多台设备进行使用 。
因为设备标识 , 一般是设备序列号(SN) , 对于硬件厂商来说是可以自己按照一定的规则随便刷的 。
那为了防止被客户白嫖 , 我们自然要设计一套防作弊策略:不仅仅采集客户提供的设备序列号 , 还要采集一些设备的其他信息进行辅助判断 , 该序列号只绑定了一台设备 。
当客户想白嫖我们 , 将设备A的序列号给设备B使用 , 那么在激活校验的时候 , 就会发现设备B的序列号关联的信息和我们记录的信息(设备A)不同 , 如此就可以认定客户是想白嫖 , 激活失败 。
上述方式看起来比较完美的解决了客户作弊的问题 。但是对于部分客户来说就会造成不便 。
有些客户在对接SDK后 , 会进行测试 。在测试的过程中 , 客户会不断的对硬件设备进行刷机、恢复出厂设置等骚操作 。
而刷机、恢复出厂设置会改变设备的信息(例如AndroidID) , 那么就会造成同样的序列号在同一台设备上不能激活了 。
因为刷机改变了它的设备信息 , 我们会认为这不是同一台设备 。
你可能会说 , 那客户再写一个序列号不就行了 , 反正客户可以自己刷序列号 。
客户是上帝 , 你不能指望客户去干这样的累活 。当然是我们来优化了 。
为了解决这个问题 , 我们想到一个方案:超级序列号 。这个序列号必须是我们来生成(可控) , 拥有无限次激活 , 可以在多台设备上使用的超能力 。
但是为了防止客户拿这个超级序列号白嫖我们 , 我们需要给这个超级序列号设置时间限制 。在有效时间内可以随意使用 , 一旦过了有效期就会失效 。
推荐阅读
- 密室逃脱3=2是什么意思-密室逃脱拼场人不够怎么办
- 菠萝有酒味是坏了吗-菠萝的酒味是属于酒精吗
- 空心人是什么
- 冬枣烂了吃了有什么关系-冬枣坏了是什么样的
- 年夜饭有外卖吗-一般年夜饭什么时间定合适
- 吃年夜饭要不要包红包-年夜饭红包饭前还是饭后
- 本命年红绳一定要大年三十戴还是可以提早戴-本命年红绳大年三十带吗
- 虫草发霉是怎么样的-虫草发霉是什么原因
- 床单起球是质量问题吗-床单什么材质不起球
- 乳胶漆起壳是什么原因-墙面起壳掉皮怎么办
