精华内容
下载资源
问答
  • 资源:现在我们可以通过人脸识别进行登录和注册,比如使用一登SDK集成,或者Facecore SDK集成,前后者都需要编程的基础,但幸运的是APICloud集成了一登的模块!废话不说了! 方法:一、注册一登账号并创建应用 1...

    场景:大部分的APP的注册、登录模式都是采用手机号和密码进行登录或者注册,当然这种模式并没有任何不妥,只是不能快速的实登录或者注册,减少手误或者慢的问题。
    资源:现在我们可以通过人脸识别进行登录和注册,比如使用一登SDK集成,或者Facecore SDK集成,前后者都需要编程的基础,但幸运的是APICloud集成了一登的模块!废话不多说了!

    方法:

    一、注册一登账号并创建应用

    1、打开一登的网站:http://superid.me/,并点击【开发者中心】

    2、进入【开发者中心】后,点击【我的应用】菜单下的【我的应用】,如下图

    3、创建应用

    4、进入添加应用的页面,选择【ios】和【Android】两个版本,注意:IOS的Bundle ID就是IOS的包名!

    5、注册成功了之后,就可以拿到【APP ID】和【APP Secret】


    二、为应用添加一登模块


    三、在项目的Config.xml中添加key,一登模块的详细文档(并不详细):

    展开全文
  • 目前小程序是不支持直接识别二维码下载的!! 方法一: 通过小程序里面的webview 解决 1、在webview 里面放在应用宝的下载链接 2、通过长按事件自定义菜单,代码如下 <view class="img-wrapper" @longpress...

    目前小程序是不支持直接识别二维码下载的!!

    方法一:

    通过小程序里面的webview 解决

    1、在webview 里面放在应用宝的下载链接

    2、通过长按事件自定义菜单,代码如下

    <view class="img-wrapper" @longpress="distinguish">
    	<image :src="require('./img/ewm.png')" mode="" class="ewm"></image>
    </view>
    distinguish:function(){
        uni.showActionSheet({
    		itemList: ['识别图中二维码'],
    		success: function (res) {
    			console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
    			uni.navigateTo({
    				url:'./webview' //第一步写的
    			})
    		},
    		fail: function (res) {
    			console.log(res.errMsg);
    		}
    	})
    }

    这里有一个很大的问题!!!webview 里面的第三方链接 一定要在后台配置业务域名,由于我采用的是应用宝的链接 https://a.app.qq.com 无法配置业务域名,所以这个方法不行!

    方法二:

    转变思路解决:复制应用宝链接到浏览器,由用户手动操作

    1、绑定事件不变,一样的是长按事件

    代码实现如下:

    distinguish:function(){
      uni.showActionSheet({
    	 itemList: ['复制链接'],
    	 success: function (res) {
    		console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
    		uni.setClipboardData({
    			data:'https://a.app.qq.com/o/simple.jsp?pkgname=com.ddmg.cargo',
    			success:res=>{
    				uni.showToast({
    					title:'复制成功',
    					icon:'none'
    				});
    			}
    		});
    	 },
    	 fail: function (res) {
    		console.log(res.errMsg);
    	 }
      })
    }

    方法三:

    通过小程序的客服功能,由客服发送链接给用户,用户可直接跳链接下载,需要设置小程序自动回复功能

    1、一般效果的自动回复,将客服设置未离线状态即可

    2、效果好一些的回复,需要调起小程序客服api,在小程序后台的消息中心配置,参考链接:https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D

    3、接入第三方客服平台,有自动回复功能,可能需要付费。

    虽然效果没有那么好,不过也没办法波,跪求好办法!!

    展开全文
  • 1、是否有隐私政策 在APP界面中能够找到隐私政策,包括通过弹窗、文本键接、常见问题(FAQs)等形式。 【解读】 隐私政策必须经过被收集者的同意,发布隐私政策是保证个人信息主体知情权的重要手段。清晰的隐私政策...

    一、隐私政策文本

    评估项1:隐私政策的独立性、易读性

    评估点评估标准
    1、是否有隐私政策在APP界面中能够找到隐私政策,包括通过弹窗、文本键接、常见问题(FAQs)等形式。

    【解读】

    隐私政策必须经过被收集者的同意,发布隐私政策是保证个人信息主体知情权的重要手段。清晰的隐私政策,才能实现《网络安全法》要求的“明示收集、使用信息的目的、方式和范围”。

    APP运营者首先应当制定隐私政策,并保证用户可在APP界面内对该隐私政策进行访问。具体访问方式包括用户下载登录时弹窗提醒、在APP中放置阅读链接或者在常见问题板块提供相应链接等。

    评估点评估标准
    2、隐私政策是否单独成文隐私政策以单独成文的形式发布,而不是作为用户协议、用户说明等文件中的一部分存在。

    【解读】

    本条首次提出了隐私政策应当单独成文的标准,在实践中,部分APP运营者并未制定单独成文的隐私政策,其个人信息收集、使用等相关的规则散见于用户协议、用户说明等其他文件中,对普通用户来说查找困难,更不要说理解。

    本条标准要求隐私政策单独成文,是对隐私政策重要性的再次重申,APP运营者应当明确区分隐私政策与用户协议、用户说明等文件,采用“隐私政策”或类似名称,并将与个人信息保护相关的内容全部单独列于独立的隐私政策当中。

    需要说明的是,很多企业认为用户不会认真阅读隐私政策,因此随意对待,甚至直接抄袭同类公司的隐私政策。但隐私政策的读者既包括用户,也包括监管机构、司法机构、研究者和媒体,是外界监督企业的主要文本依据,某种程度上也是企业提出抗辩的主要依据。

    评估点评估标准
    3、隐私政策是否易于访问进入APP主功能界面后,通过4次以内的点击,能够访问到隐私政策,且隐私政策链接位置突出、无遮挡。

    【解读】

    本条评估标准首次明确提出了“4次以内”的点击次数标准,将“易于访问”的标准具体化。根据本条标准,用户在点击进入APP主功能界面后,应当能够通过4次内(包含4次)的点击看到隐私政策文本。

    此外,本条还提出隐私政策链接应当位置突出、无遮挡,对此,建议APP运营者对隐私政策链接采用不同颜色、不同字体的标注方式。

    评估点评估标准
    4、隐私政策是否易于阅读隐私政策文本文字显示方式(字号、颜色、行间距等)不会造成阅读困难。

    【解读】

    本条从隐私政策文本文字显示方式方面评估隐私政策是否易于阅读,要求APP运营者不得通过缩小字号、选择辨识度较低的颜色或者减少行间距等方式给用户阅读增加障碍。易于阅读,也是知情同意原则的延伸。

    隐私政策的排版,也具有实际的法律意义。在某些行为给用户带来较高风险时,我们尤其建议采用具有区分度的排版提示用户注意,如对隐私政策文本区分字体、字号、颜色,通过加粗、下划线、增加行间距、段落间距等方式标注重点、区分段落,还可以添加目录与内部跳转链接等。

    此外隐私政策的内容应当清晰易懂。符合通用的语言习惯,使用标准化的数字、图示等,避免使用有歧义的语言,并在起始部分提供摘要,简述告知内容的重点。

    评估项2:清晰说明各项业务功能及所收集个人信息类型

    评估点评估标准
    5、是否明示收集个人信息的业务功能隐私政策中应当将收集个人信息的业务功能逐项列举,不应使用“等、例如”字样。

    :业务功能是指APP面向个人用户所提供的一类完整的服务,如地图导航、网络约车、即时通讯、社区社交、网络支付、新闻资讯,网上购物、短视频、快递配送、餐饮外卖、交通票务等。

    【解读】

    本条评估要求APP运营者在隐私政策中以穷举的方式,将收集个人信息的业务功能逐一列明。APP运营者应当重新逐一梳理其APP内提供的所有业务功能,一一核对各项业务功能是否存在收集个人信息的情况,并将其中收集个人信息的业务功能在隐私政策中逐一列明,不应遗漏。

    评估点评估标准
    6、业务功能与所收集个人信息类型是否一一对应隐私政策中对每个业务功能都应说明其所收集的个人信息类型,不应出现多个业务功能对应一类个人信息的情况。

    【解读】

    本条要求在评估点5的基础上进一步要求隐私政策中对各个业务功能收集的个人信息的类型进行分别说明,且特别强调“不应出现多个业务功能对应一类个人信息的情况”,即有多少项业务功能,就对应做多少次收集个人信息类型的说明。

    评估点评估标准
    7、是否明示各项业务功能所收集的个人信息类型每个业务功能在说明其所收集的个人信息类型时,应在隐私政策中逐项列举,不应使用“等、例如”等方式概括说明。

    【解读】

    本条评估主要针对各业务功能收集的个人信息类型,在穷举所有业务功能的前提下,要求对各项业务功能所收集的个人信息类型也进行分别的穷举列明。因此,APP运营者不得再使用概括性语言综述所收集个人信息,如“我们收集您的身份等相关信息”此类描述,而应明确写明“我们收集您的姓名、电话号码、地址信息”。

    此外,隐私政策的内容应包括但不限于“各业务功能分别收集的个人信息类型,区别基本业务功能及其运行所必要收集的个人信息,以及扩展业务功能及其运行所必要收集的个人信息”。APP运营者应当在对业务功能进一步区分的基础上列明各项业务功能所必要收集的个人信息。

    APP运营者应当在梳理其业务功能的过程中,对各项业务功能收集的个人信息进行细致检查、记录,确保能够将其准确地、一一对应地列明在隐私政策当中。对于遏制过度收集个人信息,这条会起到比较重要的作用,但也确实会和很多企业的业务流程发生碰撞,对个人信息保护的相关负责人提出了很高的要求。

    评估点评估标准
    8、是否显著标识个人敏感信息类型隐私政策应对个人敏感信息类型进行显著标识(如字体加粗、标星号、下刻线、斜体、颜色等)。

    :个人敏感信息包括身份证件号码、个人生物识别信息、银行账号、通信记录和内容、财产信息、征信信息、行踪轨迹、住宿信息、健康生理信息、交易信息、14岁以下(含)未成年人的个人信息等。(该定义见GB/T 35273《个人信息安全规范》3.2节)

    【解读】

    对个人敏感信息的判定可以从泄露、非法提供以及滥用三个角度进行,也即在发生某类个人信息的泄露、非法提供以及滥用的情况下,若会对个人信息主体权益带来重大风险,则该类信息属于个人敏感信息。

    评估项3:清晰说明个人信息处理规则及用户权益保障

    评估点评估标准
    9、APP运营者的基本情况隐私政策应对APP运营者基本情况进行描述,至少包括:
    1、公司名称;
    2、注册地址;
    3、个人信息保护相关负责人联系方式

    【解读】

    个人信息控制者应制定隐私政策,内容应包括但不限于:个人信息控制者的基本情况,包括注册名称、注册地址、常用办公地点和相关负责人的联系方式等。

    但该条款在目前隐私政策的起草中并未引起足够的重视,主要体现为以下两个方面:第一,APP运营者的基本情况未在隐私政策中进行描述。其实不少APP会在用户注册服务协议中介绍公司的基本情况,或者在APP中设置类似于“关于我们”等专门介绍性的页面,但由于未体现在隐私政策中可能会构成违规。第二,目前隐私政策中普遍未提供个人信息保护相关负责人联系方式。

    为此,建议企业:

    1、在隐私政策中设立专门的版块介绍运营者的基本情况。
    2、审查自身是否属于需要设立专职个人信息保护负责人的情形,确保公司内部的责任部门和人员满足要求。
    3、确保相关版块中提供的公司注册名称、注册地址、个人信息保护相关负责人联系方式准确无误,并确保一旦负责人发生了变动,有流程能够对隐私政策信息进行及时更新。

    评估点评估标准
    10、个人信息存储和超期处理方式隐私政策应对个人信息存放地域(国内、国外);存储期限(法律规定范围内最短期限或明确的期限)、超期处理方式进行明确说明

    【解读】

    该条标准对个人信息存储和超期处理方式两方面进行了规定。

    在个人信息存储方面,所有网络运营者在中华人民共和国境内运营中收集和产生的个人信息和重要数据都应当存储在境内。因业务需要,确需向境外提供的,应当进行安全评估。

    对于存储期限和超期处理方式具体包括:

    a、个人信息保存期限应为实现目的所必需的最短时间;
    b、超出上述个人信息保存期限后,应对个人信息进行删除或匿名化处理。

    其中,删除的定义为“在实现日常业务功能所涉及的系统中去除个人信息的行为,使其保持不可被检索、 访问的状态”,匿名化的定义为“通过对个人信息的技术处理,使得个人信息主体无法被识别,且处理后的信息不能被复原的过程”。

    为了达到合规目的,建议运营者可以:

    1、对存储期限进行说明,例如对部分个人信息规定在“在APP使用期间”,对于部分某特定功能需要的个人信息,规定在“该业务开通期间”。
    2、对不同业务功能所需的个人信息进行梳理,并在隐私政策中说明退出各业务功能时部分个人信息的处理方式。
    3、在隐私政策中说明用户注销账号后个人信息的处理方式。
    4、在隐私政策中说明APP停止运营后个人信息的处理方式。
    5、检验自身对个人信息处理后的效果(删除、匿名化)。
    6、审查自身对个人信息的管理机制,确保用户在退出特定业务、注销账号时能够及时完成处理。

    评估点评估标准
    11、个人信息的使用规则如果APP运营者将个人信息用于用户画像、个性化展示等,隐私政策中应说明其应用场景和可能对用户产生的影响。

    【解读】

    用户画像的定义是“通过收集、汇聚、分析个人信息,对某特定自然人个人特征,如其职业、经济、健康、教育、个人喜好、信用、行为等方面做出分析或预测,形成其个人特征模型的过程”。用户画像还可以分为“直接使用特定自然人的个人信息,形成该自然人的特征模型”的直接用户画像和“使用来源于特定自然人以外的个人信息,如其所在群体的数据,形成该自然人的特征模型”的间接用户画像。

    个性化展示是指“基于特定个人信息主体的网络浏览历史、兴趣爱好、消费记录和习惯等个人信息,向该个人信息主体展示信息内容、提供商品或服务的搜索结果等活动”。

    运营者在进行合规时应重点关注下列规定:

    第一,除为达到个人信息主体授权同意的使用目的所必需外,使用个人信息时应消除明确身份指向性,避免精确定位到特定个人。例如,为准确评价个人信用状况,可使用直接用户画像,而用于推送商业广告目的时,则宜使用间接用户画像;

    第二,当仅依据信息系统的自动决策而做出显著影响个人信息主体权益的决定时(例如基于用户画像决定个人信用及贷款额度,或将用户画像用于面试筛选),个人信息控制者应向个人信息主体提供申诉方法。

    建议运营者:全面梳理目前直接用户画像、间接用户画像的应用情形,梳理应用场景中会对个人信息主体权益产生影响的情形,对于会对个人信息主体权益产生影响的应用场景,在隐私政策中为个人信息主体提供申诉方法。

    评估点评估标准
    12、个人信息出境情况如果存在个人信息出境情况,隐私政策中应将个人出境信息类型列出并显著标识(如字体加粗、标星号、下划线、斜体、颜色等)。

    【解读】

    在进行此项评估时,企业应特别注意:

    1、对个人出境信息分类进行具体说明,如姓名、出生日期、身份证号码等等,而不能笼统地说存在身份信息的出境。
    2、对个人出境信息类型进行显著标识,具体方法可参考标准中所列举的。
    3、慎重审查隐私政策中列明的个人出境信息的范围,若隐私政策中规定的范围过窄,可能难以满足企业出境的需要,但若规定的过宽,则可能难以满足数据出境目的评估中必要性的要求,隐私政策本身的合理性也将受到质疑。

    值得运营者注意的是,个人信息经匿名化处理,使得个人信息主体无法被识别,且处理后的信息不能被复原的,处理后的信息便不属于个人信息,换言之,进行匿名化处理后的信息不再受上述法律的规制,若同时不构成重要数据,在出境时的阻力将大大减少,也无需再特别说明、征得个人的同意,故企业可考虑根据自身情况是否采取一定的匿名化措施以减轻合规的压力。

    评估点评估标准
    13、个人信息安全保护措施和能力隐私政策中应对APP运营者在个人信息保护方面采取的措施和具备的能力进行说明,如身份鉴别、数据加密、访问控制、恶意代码防范、安全审计等。

    【解读】

    对APP运营者而言,可以考虑从安全技术措施和内部管控流程两方面入手审查自身个人信息安全保护措施和能力。在安全技术措施方面,可以首先对自身在个人信息处理、存储等过程中使用的技术措施进行全面梳理,并按照相关的国家标准确定自身的安全能力。在内部管控流程方面,可以对照《个人信息安全规范》和相关国家标准中的具体要求,对于安全审计流程、访问控制机制等进行逐条落实。

    具体隐私政策中的相关说明可以通过如下方式进行:

    1、列举对个人信息进行安全保护的技术措施,如数据加密技术、身份识别技术等。
    2、参考相关的国家标准对自身的安全能力等级进行说明。
    3、说明自身遵循的个人信息安全协议和取得的认证。包含目前主动遵循的国际或国内的个人信息安全法律、法规、标准、协议等,以及目前已取得的个人信息安全相关的权威独立机构认证。
    4、说明运营者内部的安全管控措施,如个人信息访问、使用的授权,安全审计机制,个人信息的保留和删除机制等。

    评估点评估标准
    14、对外共享、转让、公开披露个人信息规则如果存在个人信息对外共享、转让、公开披露等情况,隐私政策中应明确以下内容:
    1、对外共享、转让、公开披露个人信息的目的;
    2、涉及的个人信息类型;
    3、接收方类型或身份。

    【解读】

    公开披露是指向社会或不特定人群发布信息的行为;转让是指将个人信息控制权由一个控制者向另一个控制者转移的过程;而共享指向的是个人信息控制者向其他控制者提供个人信息,且双方分别对个人信息拥有独立控制权的过程。对外共享、转让和公开披露作为对个人信息的使用是需要获得个人信息主体的授权同意的。

    隐私政策的自我审查中要着关注几点:

    1、对外共享、转让、公开披露个人信息目的的说明中要尤其注重合理性和正当性,不仅需要说明自身行为的目的,对于第三方使用个人信息的目的也应当进行说明。
    2、说明涉及的个人信息类型应当尽可能详细化,尤其应当注意个人敏感信息类型。
    3、在说明接收方类型或身份时应当重点说明个人信息流动过程中的面临的风险,以及接收方对于个人信息的安全保护能力、采取的安全措施等。

    评估点评估标准
    15、用户权利保障机制隐私政策应对以下用户操作方法提供明确说明:
    1、个人信息查询
    2、个人信息更正
    3、个人信息删除
    4、用户账户注销
    5、撤回已同意的授权

    【解读】

    运营者应当向个人信息主体提供能够访问、更正、删除其个人信息,以及撤回同意、注销账户等方法。这其中每一项都是个人信息主体享有的权利,也意味着运营者不能再通过喊口号的方式进行宣示性规定,而是必须建立实际的用户行使权利渠道。

    目前APP涉嫌违规主要体现在几个方面:

    一是相关渠道缺失,如部分APP不提供用户账户注销的途径。二是对用户行使权利附加不合理的条件,用户行使权利程序复杂。三是用户行使权力达不到应有的效果。

    评估点评估标准
    16、用户申诉渠道和反馈机制隐私政策中至少提供以下一种投诉渠道:
    1、电子邮件
    2、电话
    3、传真
    4、在线客服
    5、在线表格

    【解读】

    具体实施中,运营者可以通过提供电子邮箱地址、电话号码、传真地址等方式满足合规要求。除此外还建议明确用户可以收到回应的时间,同时建议运营者对外部争议解决机构及联络方式进行说明,例如说明运营者所在管辖区的法院,提供行业自律协会的信息等等。

    评估点评估标准
    17、隐私政策时效应明确标识隐私政策发布、生效或更新日期。

    【解读】

    这一评估点体现了监管部门对隐私政策透明度的要求,目前大多数APP的隐私政策没有明确表明其时效性。相关隐私政策发布、生效或更新的时间,能够使用户更清楚地了解APP运营者发布、更新隐私政策的情况,也能督促APP运营者根据法律要求及时更新隐私政策。

    评估点评估标准
    18、隐私政策更新如果发生业务功能变更、个人信息出境情况变更、使用目的变更、个人信息保护相关负责人联络方式变更的情形时,隐私政策应进行相应修订,并通过电子邮件、信函、电话、推送通知等方式及时告知用户。

    【解读】

    该评估点的要求,主要包括两个方面:

    首先,一旦涉及产品业务功能、个人信息出境情况、个人信息使用目的发生变更,或者个人信息保护相关负责人联络方式发生变更,APP运营者应当及时对其隐私政策做出修订,避免出现发生上述变更但是有关用户无法获取相关信息的情况。

    其次,APP运营者的义务在及时更新隐私政策之外,还包括采取合理的方式履行其告知义务。值得注意的是,本项评估标准列举的通知方式不包括“公告”,尽管有“等方式”这一兜底用语,但从已列举的情形来看监管部门要求APP运营者进行通知时应尽量采取能够直接通知到个人的方式。

    此外,如用户不同意更新后的隐私政策,APP中还应当提供注销账号等服务,使用户可以停止使用相关产品或服务,或停止使用其不同意的内容所对应的业务功能。

    评估项4:不应在隐私政策等文件中设置不合理条款

    评估点评估标准
    19、隐私政策等文件是否存在免责等不合理条款APP运营者不应在用户协议、服务协议、隐私政策等文件中出现免除自身责任、加重用户责任、排除用户主要权利条款。

    :免除自身责任是指APP运营者免除其依照法律规定应当负有的强制性法定义务;
    加重用户责任是指APP运营者要求用户在法律规定的义务范围之外承担责任或损失;
    排除用户主要权利是指APP运营者排除用户依照法律规定或者依照合同的性质通常应当享有的主要权利。

    【解读】

    用户协议、服务协议、隐私政策的内容属于APP运营者为了重复使用而预先拟定,且未与用户协商的格式条款,而不合理的免责条款一直是格式条款存在的突出问题。

    APP运营者不仅需要重视免责条款的约定,还需履行关于格式条款的提示、说明义务并且遵守格式条款的解释规则等规定,最好能采取加粗、下划线等合理方式提请用户注意免除或者限制其责任的条款;并确保有关条款应易于理解,避免使用有歧义的语言。

    二、APP收集使用个人信息行为

    评估项5:收集个人信息应明示收集目的、方式、范围

    评估点评估标准
    20、是否向用户明示收集、使用个人信息的目的、方式、范围1、在用户安装、注册或首次开启APP时,应主动提醒用户阅读隐私政策。
    2、当APP打开系统权限时(不包括用户自行在系统设置中打开权限的情况),APP应当说明该权限将收集个人信息的目的。
    3、收集个人敏感信息时,APP应通过弹窗提示等显著方式向用户明示收集、使用个人信息的目的、方式、范围。

    【解读】

    本项评估标准旨在保障用户的知情权,确保用户知悉隐私政策、APP使用的系统权限及收集个人敏感信息的情况。目前,部分APP在用户安装、注册或首次开启时,未将隐私政策放置在注册、登陆界面提示用户阅读,或在勾选处采用预填写“登陆即代表同意隐私政策”等方式取得用户同意;在APP打开系统权限时,部分APP未向用户提示该等操作,或仅说明将使用相关权限但未对权限开启目的进行说明;在收集个人敏感信息时,部分APP也未向用户进行说明。

    该项评估标准要求在用户注册安装、打开系统权限以及收集个人敏感信息三个节点均以弹窗或其他说明方式反复履行告知义务,我们建议APP运营者内部合规部门和业务部门共同协商探讨,在不会过度影响用户体验的情况下,履行其合规义务。

    评估点评估标准
    21、若使用Cookie及其同类技术收集个人信息,是否向用户明示当使用Cookie等同类技术(包括脚本、Clickstream、Web信标、Flash Cookie、内嵌Web链接、sdk等)收集个人信息时,应向用户明示所收集个人信息的目的、类型。

    【解读】

    建议APP运营者在隐私政策中将“如何使用Cookie和同类技术”作为单独的一部分进行说明,并向用户提供限制自动工具进行数据收集的方法和详细的指导。

    评估点评估标准
    22、若存在嵌入第三方代码插件收集个人信息的功能,是否向用户明示如果通过嵌入第三方代码、插件等方式将个人信息传输至第三方服务器,应通过弹窗提示等方式明确告知用户。

    【解读】

    与其他个人信息收集方式相比,通过嵌入第三方代码、插件等方式将个人信息传输至第三方服务器的行为更为隐蔽,通常情况下用户对此类行为没有直观的感知,而相关个人信息被第三方收集使用,可能会严重背离用户对于其个人信息收集和使用的合理期待。

    鉴于此,建议APP运营者梳理APP中嵌入的第三方代码、插件,以及APP向该等第三方代码、插件传输的个人信息的类型、目的和范围,并在将个人信息传输至第三方服务器前,通过弹窗提示等方式明确告知用户。

    从保护用户的权利出发,最好还能通过产品设计,确保用户能够依法行使同意权。对此,APP运营者可以考虑借鉴操作系统在实践中的做法:当操作系统上承载和集成的各类应用APP存在收集用户个人信息的行为时,操作系统通常会及时检测到该行为,并通过事先设定的弹窗提示用户。

    评估项6:收集使用个人信息应经用户自主选择同意,不应存在强制捆绑授权行为

    评估点评估标准
    23、收集个人信息前是否征得用户自主选择同意APP收集个人信息前应提供由用户主动选择同意或不同意的选项,不同意应仅影响与所拒绝提供个人信息相关的业务功能。

    【解读】

    用户的知情同意原则是个人信息保护的基本原则之一。如何保障用户的知情同意,一直是监管机构关注的重点。对于此项评估标准,应当关注以下几个方面:

    1、在收集个人信息前,APP应提供用户主动选择同意或不同意的选项;
    2、应当存在个人信息主体撤回同意的实现机制,且撤回同意的实现方式或途径应当与作出同意的方式或途径同样简便;
    3、用户做出不同意的选择或撤回相关同意,不应影响其自主选择使用的其他业务功能或降低业务功能的服务质量。

    评估点评估标准
    24、是否存在将多项业务功能和权限打包,要求用户一揽子接受的情形1、不应通过捆绑APP多项业务功能的方式,要求用户一次性接受并授权同意多项业务功能收集个人信息的请求。
    2、根据用户主动填写、点击、勾选等自主行为,作为产品或服务的业务功能开启或开始收集个人信息的条件。

    【解读】

    对于此项评估标准,应当关注以下几个方面:

    1、将APP产品和服务的功能划分为基本业务功能和扩展业务功能;
    2、对于基本业务功能,根据用户主动填写、点击、勾选等自主行为,作为产品或服务的业务功能开启或开始收集个人信息的条件;
    3、对于扩展业务功能,建议采用单独的交互界面或设计(弹窗、文字说明等形式)向用户告知该种功能需要收集的个人信息类型、目的、方式和范围等信息,并由用户主动选择是否同意。

    评估项7:收集个人信息应满足必要性要求

    评估点评估标准
    25、实际收集的个人信息类型是否超出隐私政策所述范围各业务功能实际收集的个人信息类型应与隐私政策所描述的内容一致,不应超出隐私政策所述范围。

    【解读】

    如前所述,收集个人信息前,APP运营者应向个人信息主体明确告知所提供产品和服务的不同业务功能收集的个人信息类型,并获得个人信息主体的授权同意,若APP运营者收集的个人信息的范围超出之前同意的范围,应及时更新隐私政策并再次征得个人信息主体的明示授权同意。

    需要特别注意的是,APP运营者在其产品或服务中集成第三方产品或服务的情况也较为常见,对于该第三方产品或服务收集个人信息的行为(委托处理和共同个人信息控制的情形除外),除了要求第三方遵守APP隐私政策中约定的类型收集用户个人信息,还应开展技术检测等形式确保第三方个人信息收集、使用的行为符合隐私政策的约定,如发现超出约定范围,应及时切断接入。

    评估点评估标准
    26、收集与业务功能有关的非必要信息,是否经用户自主选择同意当APP运营者收集的个人信息超出必要信息范围时,应向用户明示所收集个人信息目的并经用户自主选择同意。

    注1:必要信息指与基本业务功能直接相关,缺少该信息则基本业务功能无法实现的信息。
    注2:自主选择同意是指个人信息主体通过书面声明或主动做出肯定性动作,对其个人信息进行特定处理做出明确授权的行为。肯定性动作包括个人信息主体主动作出声明(电子或纸质形状)、主动勾选、主动点击“同意”“注册”“发送”“拨打”、主动填写或提供等。

    【解读】

    本条评估标准再次强调了信息收集时的必要性原则,以及经过用户自主选择同意的要求。同时,收集个人信息的类型应与实现产品或服务的业务功能有直接关联。直接关联是指没有该信息的参与,产品或服务的功能无法实现。

    评估点评估标准
    27、是否收集与业务功能无关的个人信息APP不应收集与业务功能无任何关系的个人信息。

    【解读】

    本条评估标准同样涉及收集个人信息的必要性原则。如果说收集与业务功能有关的非必要信息是“附条件合规”,那么,收集与业务功能无关的个人信息就是“本身违规”的问题,APP运营者收集与业务功能完全无关的个人信息,更容易给社会公众留下“作恶”的负面印象。

    评估点评估标准
    28、是否在用户明确拒绝后继续索要权限、打扰用户对于用户明确拒绝使用、关闭或退出的特定业务功能,APP不应再次询问用户是否打开该业务功能或相关系统权限。

    【解读】

    在实践中,APP运营者反复提醒用户打开某项业务功能或权限的情况较为常见,给不同意此类授权的用户造成极大困扰,有强迫用户授权的嫌疑。针对此种情形,本条将APP运营者的义务规定为“不应再次”,也就是说一旦用户明确拒绝使用、关闭或退出的特定业务功能,APP运营者将不得再次询问用户是否打开相关权限。

    评估点评估标准
    29、APP更新是否更改系统权限设置APP更新升级后,不应更改原有的系统权限设置。

    【解读】

    实践中,部分APP更新升级后,在未提示用户并再次取得用户同意的情况下,擅自更改原有系统权限设置,侵犯了用户对于个人信息的知情权和选择权。系统权限的设置体现了用户对APP运营者收集、使用其个人信息的授权情况,若APP更新升级后,便可自动更改原有的权限设置,用户的个人信息安全将无法得到基本的保障,因此APP运营者应保证在APP更新升级时,不得未经用户同意或用户主动操作自行更改系统权限,扩大收集、使用的个人信息范围。

    三、APP运营者对用户权利的保障

    评估项8:支持用户注销账号、更正或删除个人信息

    评估点评估标准
    30、是否支持用户注销账号APP应提供注销账号的途径(如在线功能界面、客服电话等),并在用户注销账号后,及时删除其个人信息或进行匿名化处理。

    【解读】

    大数据时代用户数据之珍贵使得运营者往往对APP账号注销持有反感的态度,因此,用户是否能够注销账户也成为监管重点之一。根据《个人信息安全规范》的要求,通过注册账户提供服务的个人信息控制者,应向个人信息主体提供注销账户的方法,且该方法应简便易操作。

    个人信息主体注销账户后,应删除其个人信息或做匿名化处理。因此,APP运营者应直接在产品或服务提供的在线功能界面中设置相应的选项或提供客服电话,以便个人信息主体在线行使注销账户的权利。在用户注销账户后,运营者应当及时删除用户个人信息或对个人信息进行匿名化处理。

    评估点评估标准
    31、是否支持用户查询、更正或删除个人信息APP应提供查询、更正、删除个人信息的途径。

    【解读】

    APP运营者应当关注以下几个方面内容:

    1、在产品设计方面,应向用户提供个人信息访问、更正和删除的方法和途径;
    2、用户应可以访问、查询APP运营者持有的该主体的个人信息内容及类型、上述个人信息的来源和所用于的目的、已经获得上述个人信息的第三方身份或类型;
    3、若用户发现APP运营者所持有的该主体的个人信息有错误或不完整的,APP运营者应为其提供请求更正或补充信息的方法;
    4、当APP运营者违反法律法规或违反与用户的约定向第三方共享、转让个人信息且用户要求删除的,APP运营者除应立即停止共享、转让行为外,还应通知第三方及时删除,以最大限度保障用户的合法权益。

    评估项9:及时反馈用户申诉

    评估点评估标准
    32、是否及时反馈用户申诉APP运营者应妥善受理并及时反馈用户申诉,原则上在15天内回复处理意见或结果。

    【解读】

    本条设定了“15天”的回复时限。此处需重点解读的是:

    一方面,“原则上在15天内”表明15天的期限是常态,也即是说,正常情况下处理用户申诉,应当在这个期限内回复处理意见(不论该处理意见是“予以处理”或“不予处理”),这是处理申诉及时性的要求;

    另一方面,既然有原则,自然也有例外,如若遇到特殊情况,例如“用户恶意申诉”、“申诉渠道错误”等情形,导致APP运营者无法在15天期限内回复的,不宜继续适用15天的反馈时间要求。

    展开全文
  • return new ModelResultClient().failFactory("找到匹配的银行信息"); } //获取的是银行缩写,须查询数据字典 String bank = bankNamePO.getBank(); BankCardInfoDTO bankCardInfoDTO = new BankCardInfoDTO(); ...

    package com.feng1.foundation.service.impl;

    import com.alibaba.fastjson.JSONException;

    import com.alibaba.fastjson.JSONObject;

    import com.feng1.foundation.dto.BankCardInfoDTO;

    import com.feng1.foundation.dto.IdentityCardInfoDTO;

    import com.feng1.foundation.po.*;

    import com.feng1.foundation.service.IDictionaryService;

    import com.feng1.foundation.service.IImageRecognitionService;

    import com.feng1.foundation.service.vo.DictionaryItemVO;

    import com.feng1.framework.common.domain.result.ModelResult;

    import com.feng1.framework.common.domain.result.ModelResultClient;

    import com.feng1.framework.common.http.HttpClient;

    import com.feng1.framework.util.DateUtil;

    import com.feng1.framework.util.JsonUtils;

    import com.google.common.collect.Lists;

    import okhttp3.MediaType;

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    import org.springframework.beans.BeanUtils;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.beans.factory.annotation.Value;

    import org.springframework.web.bind.annotation.RestController;

    import java.io.*;

    import java.net.HttpURLConnection;

    import java.net.URL;

    import java.util.*;

    import static org.apache.commons.codec.binary.Base64.encodeBase64;

    @RestController

    public class ImageRecognitionServiceImpl implements IImageRecognitionService {

    private static final Logger LOGGER = LoggerFactory.getLogger(ImageRecognitionServiceImpl.class);

    @Autowired

    HttpClient httpClient;

    @Autowired

    IDictionaryService dictionaryService;

    @Value("${imageRecognition.idCardHost}")

    private String idCardHost;

    @Value("${imageRecognition.idCardServicePath}")

    private String idCardServicePath;

    @Value("${imageRecognition.appcode}")

    private String appcode;

    @Value("${imageRecognition.qiniuPath}")

    private String qiniuPath;

    @Value("${imageRecognition.bankCardHost}")

    private String bankCardHost;

    @Value("${imageRecognition.bankCardServicePath}")

    private String bankCardServicePath;

    /**

    * 获取参数的json对象

    */

    public static JSONObject getParam(int type, String dataValue) {

    JSONObject obj = new JSONObject();

    try {

    obj.put("dataType", type);

    obj.put("dataValue", dataValue);

    } catch (JSONException e) {

    LOGGER.error("JSONException",e);

    }

    return obj;

    }

    @Override

    public ModelResult identityCardRecognition(String imagePath) {

    String imgFilePath = qiniuPath +"/"+ imagePath;

    //String imgFilePath ="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1531919752737&di=8f489a54cd0e4beb43c424858cdb9a09&imgtype=0&src=http%3A%2F%2Fcq.focus.cn%2Fupload%2Fphotos%2F1760%2F7Nh8JmKZ.jpg";

    //如果文档的输入中含有inputs字段,设置为True, 否则设置为False

    //获取图片文件

    File imageFile = getImageFile(imgFilePath);

    //请根据线上文档修改configure字段

    JSONObject configObj = new JSONObject();

    configObj.put("side", "face");

    String config_str = configObj.toString();

    // 对图像进行base64编码

    String imgBase64 = "";

    try {

    byte[] content = new byte[(int) imageFile.length()];

    FileInputStream finputstream = new FileInputStream(imageFile);

    finputstream.read(content);

    finputstream.close();

    imgBase64 = new String(encodeBase64(content));

    } catch (IOException e) {

    e.printStackTrace();

    return new ModelResultClient().failFactory("-1","IO异常");

    }

    // 拼装请求body的json字符串

    JSONObject requestObj = new JSONObject();

    try {

    requestObj.put("image", imgBase64);

    if(config_str.length() > 0) {

    requestObj.put("configure", config_str);

    }

    } catch (JSONException e) {

    e.printStackTrace();

    }

    String bodys = requestObj.toString();

    IdentityCardInfoResult identityCardInfoResult =null;

    try {

    String res = httpClient.httpPostForImageRecog(idCardHost + idCardServicePath, bodys, MediaType.parse("application/x-www-form-urlencoded"),appcode);

    identityCardInfoResult = JsonUtils.jsonToBean(res, IdentityCardInfoResult.class);

    } catch (Exception e) {

    e.printStackTrace();

    }

    if(!"true".equalsIgnoreCase(identityCardInfoResult.getSuccess())){

    imageFile.delete();

    return new ModelResultClient().failFactory(identityCardInfoResult.getCode(),identityCardInfoResult.getMessage());

    }

    IdentityCardInfoDTO identityCardInfoDTO = new IdentityCardInfoDTO();

    String birth = identityCardInfoResult.getBirth();

    Date yyyyMMdd = DateUtil.parseDate(birth, "yyyy-MM-dd");

    int diffMonth = DateUtil.diffMonth(yyyyMMdd,new Date());

    int age = diffMonth / 12;

    BeanUtils.copyProperties(identityCardInfoResult,identityCardInfoDTO);

    identityCardInfoDTO.setAge(age);

    imageFile.delete();

    return new ModelResultClient().successFactory(identityCardInfoDTO);

    }

    @Override

    public ModelResult bankCardRecognition(String imagePath) {

    String imgFilePath = qiniuPath +"/"+ imagePath;

    File imageFile = getImageFile(imgFilePath);

    String imgBase64 = "";

    try {

    byte[] content = new byte[(int) imageFile.length()];

    FileInputStream finputstream = new FileInputStream(imageFile);

    finputstream.read(content);

    finputstream.close();

    imgBase64 = new String(encodeBase64(content));

    } catch (IOException e) {

    e.printStackTrace();

    return new ModelResultClient().failFactory("-1","IO异常");

    }

    JSONObject imageBody = new JSONObject();

    imageBody.put("dataType",50);

    imageBody.put("dataValue",imgBase64);

    JSONObject imageBodyOutSide = new JSONObject();

    imageBodyOutSide.put("image",imageBody);

    List objects = Lists.newArrayList();

    objects.add(imageBodyOutSide);

    JSONObject requestBody = new JSONObject();

    requestBody.put("inputs",objects);

    String requestString = requestBody.toString();

    BankCardInfoResult bankCardInfoResult = new BankCardInfoResult();

    try {

    //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105

    String res = httpClient.httpPostForImageRecog(bankCardHost + bankCardServicePath, requestString, MediaType.parse("application/json;charset=utf-8"),appcode);

    bankCardInfoResult= JsonUtils.jsonToBean(res, BankCardInfoResult.class);

    } catch (Exception e) {

    LOGGER.error("调用阿里银行卡图像识别接口失败",e);

    }

    List outputs = bankCardInfoResult.getOutputs();

    BankCardOutput bankCardOutput = outputs.get(0);

    BankCardOutputValue outputValue = bankCardOutput.getOutputValue();

    String dataValue = outputValue.getDataValue();

    BankCardDataValue bankCardDataValue = JsonUtils.jsonToBean(dataValue, BankCardDataValue.class);

    String successRes = bankCardDataValue.getSuccess();

    if(!"true".equalsIgnoreCase(successRes)){

    imageFile.delete();

    return new ModelResultClient().failFactory();

    }

    //获取银行卡号

    String card_num = bankCardDataValue.getCard_num();

    String res =null;

    try {

    res = httpClient.httpGet("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo="+card_num+"&cardBinCheck=true");

    } catch (IOException e) {

    LOGGER.error("根据银行卡号调用接口查询银行信息失败",e);

    }

    BankNamePO bankNamePO = JsonUtils.jsonToBean(res, BankNamePO.class);

    if("true".equalsIgnoreCase(successRes) && "false".equalsIgnoreCase(bankNamePO.getValidated())){

    imageFile.delete();

    return new ModelResultClient().failFactory("未找到匹配的银行信息");

    }

    //获取的是银行缩写,须查询数据字典

    String bank = bankNamePO.getBank();

    BankCardInfoDTO bankCardInfoDTO = new BankCardInfoDTO();

    bankCardInfoDTO.setBankCardNum(card_num);

    bankCardInfoDTO.setBankCode(bank);

    ModelResult> bankNameResult = dictionaryService.getDictItems("BankName");

    List bankList = bankNameResult.getData();

    for (DictionaryItemVO dictionaryItemVO : bankList) {

    if(dictionaryItemVO.getValue().equalsIgnoreCase(bank)){

    bankCardInfoDTO.setBankName(dictionaryItemVO.getLabel());

    break;

    }

    }

    imageFile.delete();

    return new ModelResultClient().successFactory(bankCardInfoDTO);

    }

    private File getImageFile(String imgFilePath){

    URL url = null;

    File imageFile =null;

    try {

    //new一个URL对象

    url = new URL(imgFilePath);

    //打开链接

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();

    //设置请求方式为"GET"

    conn.setRequestMethod("GET");

    //超时响应时间为5秒

    conn.setConnectTimeout(5 * 1000);

    //通过输入流获取图片数据

    InputStream inStream = conn.getInputStream();

    //得到图片的二进制数据,以二进制封装得到数据,具有通用性

    byte[] data = readInputStream(inStream);

    //new一个文件对象用来保存图片,默认保存当前工程根目录

    imageFile = new File("BeautyGirl"+UUID.randomUUID()+".jpg");

    //创建输出流

    FileOutputStream outStream = new FileOutputStream(imageFile);

    //写入数据

    outStream.write(data);

    //关闭输出流

    outStream.close();

    } catch (Exception e) {

    LOGGER.error("根据七牛云图片url生成图片文件异常"+e);

    }

    return imageFile;

    }

    private static byte[] readInputStream(InputStream inStream) throws Exception{

    ByteArrayOutputStream outStream = new ByteArrayOutputStream();

    //创建一个Buffer字符串

    byte[] buffer = new byte[1024];

    //每次读取的字符串长度,如果为-1,代表全部读取完毕

    int len = 0;

    //使用一个输入流从buffer里把数据读取出来

    while( (len=inStream.read(buffer)) != -1 ){

    //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度

    outStream.write(buffer, 0, len);

    }

    //关闭输入流

    inStream.close();

    //把outStream里的数据写入内存

    return outStream.toByteArray();

    }

    }

    展开全文
  • 获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。获取当前运行环境信息、与其它程序进行通讯等。通过plus.runtime可获取运行环境管理对象。直接上demo,复制即可用。...
  • 获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。获取当前运行环境信息、与其它程序进行通讯等。通过plus.runtime可获取运行环境管理对象。直接上demobody{max-width: ...
  • 咋一听很高大上,哈哈,不过行为识别和个性化推荐的功能目前还不完善,暂时忽略。本着学习Android技术的目的,SmartRecom使用了多款流行开源框架,以及Android中一些重要的技术点。在做SmartRecom的过程中,抱着边做...
  • 为了获取Appium自动化之获取APP Toast(消息提示框)的信息,安装了appium-uiautomator2-driver,结果adb devices 设备都是授权状态,环境坏了 cnpm install appium-uiautomator2-driver 按照下面文档操作有坑...
  • 文章目录 0.文档 1.application 2.dto 3.constant 4.service 0.文档 [官方文档](https://faceid.com/pages/documents) 1.application server: port: 80 megvii: appKey: XXX secret: XXX # 验证通过后跳转的页面 ...
  • 监控服务器状态app

    2021-08-12 10:10:35
    监控服务器状态app 内容精选换一换AOM可与消息通知服务、分布式消息服务、云审计等服务配合使用。例如,通过消息通知服务您可将AOM的阈值规则状态变更信息通过短信或电子邮件的方式发送给相关人员。同时AOM对接了...
  • 这样就可以让微信小程序访问到mp-weixin小... "miniprogramRoot": "./dist/dev/mp-weixin" 1 具体操作向下: -导入之前项目根目录下的project.config.json文件: 还有另外的一种解决方法就是直接用uni-app创建项目
  • 此处填入runserver 127.0.0.1:8888 8888之端口号可随意; 启动即如下图;
  • uni-app【多媒体API】

    千次阅读 2021-12-11 13:42:17
    插件市场也有适于App端的previewImage原生插件,提供了更功能。 uni.closePreviewImage(OBJECT) 关闭预览图片。 App H5 微信小程序 支付宝小程序 百度小程序 字节跳动小程序 飞书小程序 QQ小程序 快手小程序 √ ...
  • 原因是git clone 生成了一个新的文件夹,更改了目录 HbuderX只识别当前根目录下的mainfest,解决方法右键“移除项目”,重新选择 git clone新生成的目录作为根目录。或者删除项目后从HbuderX里面克隆。 相关链接:...
  • 产品线覆盖了企业客户从创业起步期、规范治理期、规模化增长期、战略升级期等全生命周期,针对性的解决企业的信息化、数字化、智能化的生产力升级需求。本中心还拥有两大独立腾讯子品牌:DNSPod与Discuz!,在过去15...
  • 用TensorFlow Lite 写个手写体识别 APP

    热门讨论 2021-07-19 19:35:55
    我想这也是很初学者的痛点,很入门同学都没有完整从模型建立,训练,到转换成TensorFlowLite,并在Android中实际的用。 于是我就把我之前写的demo给了他,想想还是抽空把这个demo写成文章,希望能够给帮助到更...
  • uni-app指纹登录

    2021-04-01 09:56:51
    // #endif // #ifndef APP-PLUS || MP-WEIXIN this.result = '此平台不支持指纹识别'; // #endif }, methods: { printCancel:function(){ plus.fingerprint.cancel(); this.result="停止指纹识别" }, fingerprint: ...
  • 手机app接入云服务器

    2021-08-10 04:08:32
    手机app接入云服务器 内容精选换一换SAP NetWeaver实例运行在弹性云服务器上。需要根据部署场景,创建一台或台弹性云服务器。请参见方案介绍和数据规划章节,确定弹性云服务器数量及相关规划信息。根据界面提示,...
  • 但是问题就出现了,登录验证无法验证是否是本app请求,导致登录验证后不好处理,因为页面的api.js和app里的api.js不互通,页面做登录对app来说没有作用。 代码: php: $headers = apache_request_headers(); ...
  • 使用组件 live-pusher ,结合组件的预览(startPreview)和快照(snapshot)实现相机功能,人脸识别使用的是tracking-min.js和face-min.js 使用h5和uniapp交互识别人脸,人脸识别android可以识别,但是ios 快照的...
  • 基于MATLAB的战术手势识别功能的设计与实现摘 要手势识别技术是人们生活中常见的一类图像处理技术,也是目前比较火热的研究领域之一,手势识别可以用于人们生活中各种场景,比如利用手势进行电视信息交互,只需要...
  • 类型:教育学习大小:35.3M语言:中文 评分:10.0标签:立即下载对着花拍照可以识别花名字的app是什么呢,一些朋友在去外游玩的时候会看到一些平时没有看到过的花,不知道那些花叫什么名字,那么现在就有这样一款...
  • 为了保护隐私和敏感数据,应用往往会增加用户登录功能。...无论是要求用户每次打开应用都需要登录,还是只要求在安装启动后进行仅此一次的登录,图 ...△ 图 1: 使用生物识别的授权流程 然而,图 1 这种授权方式有一些弊
  • 菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传] [App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点] [App安装包或H5地址] [可重现代码片段] 联系方式 [QQ]
  • 虽然在Js中可以启动某个app,但是并不能判断该app是否安装;但是,但是....还是有奇思淫巧滴,启动app需要的时间较长,js中断时间长,如果没安装,js瞬间就执行完毕。直接上代码吧!html代码:打电话js代码:...
  • Android 百度图像识别(详细步骤+源码)

    千次阅读 多人点赞 2021-04-01 17:11:50
    注意下图标注的信息 由于图像识别没有直接的Android SDK,因此本文将通过API访问进行图像的识别。 二、创建Android项目 通过API方式,则需要先完成鉴权认证,然后拿到Access Token,通过这个Access Token才能去...
  • APP用户隐私协议

    2021-05-12 15:15:38
    APP用户隐私协议 本隐私政策适用于本站开发者,请仔细阅读,我们致力于为用户提供优质服务,有任何问题欢迎您联系:liabc2021@163.com 1.技术支持和用户使用条款 用户在使用本产品之前,请务必仔细阅读本协议包含的全部...
  • = "wifi") { // uni.showToast({ // icon: 'none', // duration: 2000, // title: "连接WIFI", // }) this.geography.wifi = "" } else { //判断获取的WiFi是否为机型WiFi // 主窗体 var MainActivity = plus....
  • Android APP Links 配置

    2021-06-06 16:55:18
    简介在Instant App开发中,需要app支持Instant App Links. 本文中,主要介绍其作用,配置必需条件,配置的过程。二. 作用App Links 本质上是 Deep Link 的一种延伸,我们知道,Deep Link配置在Manifest之后,通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,052
精华内容 25,220
关键字:

多看app未能识别目录信息