怎样国内 app用户获取成本APP权限?

APP111苹果园为用户提供苹果游戏软件介绍,视频,攻略,评测,iphone6游戏,iphone5s游戏下载
iphone6 plus软件下载,ipad mini软件,ipad游戏,最新最全的限时免费游戏信息内容字号:
段落设置:
字体设置:
精准搜索请尝试:
开发者如何要iOS用户权限?得动动脑筋
来源:ifanr作者:王崇旭责编:玄隐
我可以给你发推送通知吗?我可以查看你的通讯录吗?我可以知道你在哪里吗?我可以看看你的照片吗?
iOS用户在初次使用一个App时,基本上都会遇到类似这样的弹窗问候。由于iOS的沙盒机制,第三方App在调用数据这方面遭到了诸多限制,苹果仅仅开放了部分接口(相册,联系人,地理位置等)供开发者使用。不仅如此,每一部分的数据接口都需要用户允许才能取得调用权限。而这一步,恰恰是会影响到整个用户体验的关键因素。
但在体验各种App的实际过程中,你会发现大部分开发者在这一关键细节上简直是毫不用心。要知道,一旦用户在看到弹窗时选择了“不允许”,再要让他们“反悔”几乎没有可能。因为要完成这一步,用户需要另外做五步操作(如下图)。
关于这个问题,Cluster的联合创始人兼设计师Brenden Mulligan有非常具备参考价值的案例整理和思考。
他提到现有App最常用的两种方式,也是Cluster最初版本使用的方式,其实并不高效:
用户一打开App,就弹窗要求取得权限。这种情况下,用户选择允许的比例仅有30%到40%。
在要求权限之前“教育”用户,告诉用户为什么要这么做,能获得什么好处。这种情况下,用户选择允许的比例为40%到66%。
但这显然还不够,任何一个公司都不愿意看到这么大的流失率。毕竟一旦用户在系统层面不给予授权,他留在这个App的时间也就不久了。于是,Brenden Mulligan在这个细节上又做了三次调整,并成功将权限通过率提升到了相当乐观的水平。
他是怎么做到的?用他的话来说就是――情境很重要,弹窗应该在用户希望其出现的时候再出现,也就是“由用户自行触发弹窗”。他以Cluster在要求相册、通讯录、推送通知三大权限为例进行了阐述:
应该什么时候要求相册权限?Cluster选择了在用户进行“选取照片”这一步操作的时候,而非在此之前的任何一步操作。仅这个调整,权限通过率就从67%提升到了89%。
在要求通讯录权限这一方面,Cluster选择了“先让用户尝点苦头”。当用户发现他们几乎无法搜索到朋友的时候,点选“显示通讯录好友”并允许通讯录获取权限的比例达到了100%。
而在要求推送通知之前,Cluster问了一个合情合理的问题:“是否希望在朋友加入时通知你?”这样处理的结果与通讯录权限类似,选择了“通知我”的用户都允许了Cluster推送通知。
尽管Cluster的这个案例可能并不适用于每个App,但Brenden Mulligan所提到的细节处理确实值得App开发者和设计师给予“额外关照”。毕竟用户是App发展的基础,体验则是用户留下来的保证。尝试用“同理心”去处理好这些细节,事半功倍或许就不是一种妄想了。
相关文章|||||
软媒旗下软件:|||||||
IT之家,软媒旗下,国内顶级IT科技门户网站。
Copyright (C) , All Rights Reserved.
版权所有 鲁ICP备号9月19日,第三届江苏网络文化季开幕,主题是“互联你我 圆梦江苏”。[]
广场舞究竟路在何方?“在哪儿跳、怎么跳?”[]
2003年面世的“校讯通”,其本身已不仅是一个信息平台。[]
& & & 正文
免费APP要求获得权限 其实是拿用户信息卖钱
【字号:&&】【】
  不少人都会在手机上安装“手电筒”APP,以备不时之需。殊不知,这种不起眼的软件也可能“偷”走你的隐私。美国一家知名的电子安全公司“侦探墙”这几天警告说,“手电筒”这种不起眼的APP,居然也会把手机位置、使用者具体信息、联系人甚至短信内容等偷偷发送给市场研究公司或广告公司。与此同时,360互联网安全中心日前对最流行的10款正规厂商广告插件进行了一次全面的安全性分析,结果发现十款APP广告插件均涉及收集用户隐私信息、滥用隐私权限的情况,还存在消耗手机流量、躲避安全软件检测等行为。
  技术专家提醒,在下载免费软件时一定要留点心眼,因为免费软件的盈利模式之一就是向第三方出售客户的数据。
  “手电筒”居然要求用户 开放7项权限
  在很多人的印象里,“手电筒”只是将手机背后的闪光灯长时间亮起以提供照明的软件,可以说是“小儿科中的小儿科”,几乎没有什么技术含量。而且这种应用与地图、交友什么的不一样,完全是一种单方行为,所以程序一定很简单。
  昨日,记者在手机上自带的“安卓市场”里,下载了几款“手电筒”APP。然而,在安装这些不同出品方出品的“手电筒”软件后,记者发现,这种仅需使用手机闪光灯的软件,在安装时居然也提示手机用户开放7个权限,其中包括读取通讯录、通话状态和身份,以及拍照和视频功能。更离谱的是,安装这些手机软件时,用户根本没有权利选择开放哪些功能。在软件下载完成后,安装界面没有提供勾选开放或关闭某些权限的功能,只能默认全都开放,或者干脆取消安装。在这种情况下,绝大多数人都会选择接受。
  随后,记者又使用安卓手机下载了多款不同类型的软件。在安装“58同城”时,提示需要开放个人信息、地理位置、网络通讯、账户信息等15项权限。这15项权限中,地理位置用于同城定位、网络通讯用于网络连接及访问,这些权限的开放,确实是功能所需。但其中一项个人信息的权限开放,却标明要查阅敏感日志数据。而记者随后下载的一个“随身笔记”软件,居然也同样提示需要开放个人信息、地理位置、网络通讯、账户信息等15项权限。
  记者遭遇的这一情况,也被刚刚发布的行业报告证实。昨日,360互联网安全中心向记者提供了《2014年APP广告插件安全研究报告》。它针对当前安卓平台1000款热门应用中最流行的10款正规厂商广告插件进行了一次全面的安全性分析。研究数据显示,10款APP广告插件均涉及收集用户隐私信息、滥用隐私权限的情况,此外还存在消耗手机流量、躲避安全软件检测等多种不良行为。令人担忧的是,目前市场上主流正规广告插件均存在一定安全隐患,最严重的甚至会导致手机中毒。
  记者了解到,上述报告所测试的10款广告插件共使用了26项权限,最多的一款使用了13项权限,平均每款插件使用了9.6项权限。100%的插件使用了读取电话状态的权限,70%的插件使用了获取用户地理位置的权限,20%的插件使用了拨打电话的权限,10%的插件使用了发送短信的权限。所以,在某种程度上说,目前市场上的所有主流广告插件都存在隐私权限滥用的问题。此外,在上述10款广告插件中,有8款会收集用户的地理位置信息,7款会收集WiFi列表信息,4款会收集安装应用列表信息,3款会收集电话号码信息。所有广告插件均会全部收集用户的五类个人隐私信息:敏感隐私信息、手机唯一标识、联网相关信息、手机硬件配置信息和软件环境信息。
  这也就意味着手机用户的地理位置、手机号码、应用列表、手机联网方式以及硬件软件信息都会被插件厂商获取。这些信息可以让插件厂商向特定的应用推广广告,但同时,手机用户的手机使用习惯、什么时间去过什么地方等隐私信息也会泄露,不法分子完全可以将手机转换为追踪设备,可谓触目惊心。
  权限一开放用户隐私就被出售
  既然手机APP可以向他人传送信息,那么权限被开放后,我们的隐私被传送到哪儿了呢?“要看到隐私去哪儿了,必须通过后台代码来分析!”360手机安全专家潘巨敏告诉记者,为了清楚地看到隐私的去向,他做过一次实验,就是将手机连接上电脑,同时开始下载软件。他找了一款软件安装完成后,发现其后台立即显示出一连串代码数据,其中包括通讯录中的手机号码等数据。“安装运行完成后,这款软件就开始偷偷在后台上传跟功能丝毫不相关的手机号等信息,这些信息最终的去处是远端的黑客服务器。”也就是说,远端的黑客服务器在得到这些数据后,可以在用户毫不知情的情况下,下载更多恶意软件,“远端的服务器上可以任意查看你的信息内容,包括银行账户、密码等。”
  “一般泄露出来的个人信息会被用来分析,当然不排除通过地下产业进行流转,用于推广或发送广告信息等。”360手机安全专家朱翼鹏告诉记者,一旦涉及用户隐私的权限对某个应用放开,就等于把隐私毫无保留地贡献给应用开发商。一些流氓软件可能直接卖掉用户手机里的资料,或者榨取更隐私的信息,比如银行账户等。而目前手机应用过度申请甚至是滥用权限的情况非常严重,开发者为了更多地接受广告,往往将插件厂商建议的权限全部声明在应用中。而过度声明则会导致在某个应用出现安全漏洞时,广告插件获取的隐私权限都可以被攻击,导致手机用户的隐私被非法获取。
  因此,装软件时,手机用户一定要注意观察软件权限,手机恶意广告插件多通过篡改正常软件来作恶,如一个连连看游戏,出现了发短信、访问相册等与应用不相关的敏感权限,就带有恶意性质了;手机安全软件可以对权限进行关闭,用户可以定期使用安全软件对手机进行检测,及时对应用程序申请的不必要权限进行管理限制。
  62%的流量费用或被 广告插件所耗
  手机APP不仅卖我们的信息,还强推广告、干扰用户和消耗流量。上述报告指出,某些广告插件除了会在应用中显示各种类型的广告外,还会通过私自添加浏览器标签、私自添加短信记录、私自创建快捷方式等方法来强制向用户推送广告。手机广告插件主要通过全系统插屏广告和频繁推送通知栏广告干扰用户。
  广告插件消耗用户流量分为两个方面:一是用户在下载带有广告插件的应用时,需要为广告插件消耗的流量买单;二是运行带有广告插件的应用时所下载的广告数据会消耗手机流量。
  以一款手电筒应用为例,这款手电筒的安装文件大小约为2.9M,而将该应用中的所有广告插件都去除后重新生成的文件仅为1.1M,二者相差了1.8M,有广告插件的手电筒程序是没有广告插件的手电筒程序的2.6倍。换个角度来看,就是当我们去应用商店下载这款手电筒程序时,实际上约62%的流量都浪费在了广告插件上。(首席记者江海)
  原标题:免费APP要求获得权限其实是拿用户信息卖钱
  稿源:中国新闻网
  作者:
&&责任编辑:中江网编辑、娄静&&
去世时的蒋介石仍然是我们最熟悉的蒋介...
据香港媒体报道,刘嘉玲、梁朝伟及好友...
&|&&|&&|&&|&&|&
中国江苏网(江苏中江网传媒股份有限公司) 版权所有&&
&&视听节目许可证1008318号&&
移动网信息服务业务经营许可证苏B2-&&因特网信息服务业务经营许可证苏B2-Android App 获取 root权限 - quanminchaoren - ITeye技术网站
在博文《Android程序的安全系统》中提到两种让root权限的办法。本文将会以一个例子实现来演示怎样让一个Android应用程序获得root权限。
问题
&&& 现在遇到的问题是想在Java应用程序中动态mount一个NFS的系统,但是执行mount命令必须要要root权限才可以。一般情况下,在Android的Java层是不能获得root权限的。
思路
&& 在博文《Android程序的安全系统》中提到两种思路:
&&& 1、实现一个init实现一个Service,来帮助Android应用程序执行root权限的命令。
&&& 2、实现一个虚拟设备,这个设备帮助Android应用程序执行root权限的命令。
&& 本文将会选择第一种来解决Android应用程序mount NFS文件系统的问题。
Init.rc Service
&& 在Android系统init.rc中定义很多Service,具体定义格式可以参考《Android Platform Developer’s Guide》中的“Android Init Language”。Init.rc中定义的Service将会被Init进程创建,这样将可以获得root权限。
&& 现在问题是Android应用程序怎样启动让init进程知道我们想运行那个进程呢?答案是设置系统属性“ctl.start”,把 “ctl.start”设置为你要运行的Service,假设为“xxx”,Android系统将会帮你运行“ctl.start”系统属性中指定的 Service。那么运行结果init进程将会将会写入命名为“init.svc.+Service名称”的属性中,也就是“init.svc.xxx” 属性,应用程序可以参考查阅这个值来确定Service执行的情况。想更深入了解Android property系统可以参考博文《(翻译)Android属性系统》。
Android property权限
&&& 难道Android属性“ctl.start”是所有进程都可以设置的吗?那世界不就乱套了,谁都可以可以执行init.rc中Service了,查看 property_service.c中的源码,设置Android系统属性的函数为handle_property_set_fd:
&& 1: void handle_property_set_fd(int fd)
&& 3:&&&& ......
&& 4:&&&& switch(msg.cmd) {
&& 5:&&&& case PROP_MSG_SETPROP:
&& 6:&&&&&&&& msg.name[PROP_NAME_MAX-1] = 0;
&& 7:&&&&&&&& msg.value[PROP_VALUE_MAX-1] = 0;
&& 9:&&&&&&&& if(memcmp(msg.name,"ctl.",4) == 0) {
& 10:&&&&&&&&&&&& if (check_control_perms(msg.value, cr.uid, cr.gid)) {
& 11:&&&&&&&&&&&&&&&& handle_control_message((char*) msg.name + 4, (char*) msg.value);
& 12:&&&&&&&&&&&& } else {
& 13:&&&&&&&&&&&&&&&& ERROR("sys_prop: Unable to %s service ctl [%s] uid: %d pid:%d\n",
& 14:&&&&&&&&&&&&&&&&&&&&&&&& msg.name + 4, msg.value, cr.uid, cr.pid);
& 15:&&&&&&&&&&&& }
& 16:&&&&&&&& }
& 17:&&&&&&&& ......
& 18:&&&& }
&&& 从源码中我们发现如果设置“ctl.”开头的Android系统property,将会调用check_control_perms函数来检查调用者的权限,其定义如下:
&& 1: static int check_control_perms(const char *name, int uid, int gid) {
&& 3:&&&& if (uid == AID_SYSTEM || uid == AID_ROOT)
&& 4:&&&&&&&& return 1;
&& 6:&&&& /* Search the ACL */
&& 7:&&&& for (i = 0; control_perms[i]. i++) {
&& 8:&&&&&&&& if (strcmp(control_perms[i].service, name) == 0) {
&& 9:&&&&&&&&&&&& if ((uid && control_perms[i].uid == uid) ||
& 10:&&&&&&&&&&&&&&&& (gid && control_perms[i].gid == gid)) {
& 11:&&&&&&&&&&&&&&&& return 1;
& 12:&&&&&&&&&&&& }
& 13:&&&&&&&& }
& 14:&&&& }
& 15:&&&& return 0;
&&& 我们发现root权限和system权限的应用程序将会授权修改“ctl.”开头的Android系统属性。否则将会检查control_perms全局变量中的定义权限和Service。
&&& 如果想更深入的了解Android Init进程和Android Property的权限控制,请参考《Android Permission》。
实例
&&& 通过上面的介绍我们基本已经有思路了,下面以上面提出的mount nfs文件系统为例说明:
1、首先定义一个执行mount的脚本,我把它位于/system/etc/mount_nfs.sh,定义如下:
&& 1: #!/system/bin/sh
&& 3: /system/bin/busybox mount -o rw,nolock -t nfs 192.168.1.6:/nfs_srv /data/mnt
不要忘了把它加上可执行权限。
2、在init.rc中加入一个Service定义,定义如下:
&& 1: service mount_nfs /system/etc/mount_nfs.sh
&& 2:&&&& oneshot
&& 3:&&&& disabled
3、让自己的应用程序获得system权限,博文《Android程序的安全系统》中提到了怎样获得system权限,请参考,这里就不赘述了。
4、在自己应用程序中设置System系统属性“ctl.start”为“mount_nfs”,这样Android系统将会帮我们运行mount_nfs系统属性了。这里需要强调的是不能够调用System.getProperty, 这个函数只是修改JVM中的系统属性。而不能修改Android的系统属性。可以调用 android.os.SystemProperties(Android 2.1 Eclair系统可以调用这个API),如果你的Android版本不能调用这个类,只能通过JNI,调用C/C++层的API property_get和property_set函数了。如果想详细了解请参考《(翻译)Android属性系统》。代码如下:
&& 1: SystemProperties.set("ctl.start", "mount_nfs");
5、最后在自己应用程序中,读取“init.svc.mount_nfs”Android系统Property,检查执行结果。代码如下:
&& 1: while(true)
&& 3:&&&& mount_rt = SystemProperties.get("init.svc.mount_nfs", "");
&& 4:&&&& if(mount_rt != null && mount_rt.equals("stopped"))
&& 5:&&&& {
&& 6:&&&&&&&&
&& 7:&&&& }
&& 9:&&&& try
& 10:&&&& {
& 11:&&&&&&&& Thread.sleep(1000);
& 12:&&&& }catch(Exception ex){
& 13:&&&&&&&& Log.e(TAG, "Exception: " + ex.getMessage());
& 14:&&&& }
&&& init进程维护一个service的队列,所以我们需要轮训来查询service的执行结果。
&&& 通过上面的这些步骤,Android应用程序就能够调用init.rc中定义的Service了。这样你的Android应用程序也就获得了root权限。
总结
&& 通过上文可以看出,在Android获得root权限还是需要一些前提的,比如:
&&& 1、必须是Android系统开发人员,否则你无法修改init.rc等文件。 2、你的应用程序必须要获得system权限。
&&& 这样可以防止root权限被应用程序无限制的使用,最终危及Android系统安全。
quanminchaoren
浏览: 459755 次
来自: 上海
我勒个去,搜到你的博客了,关注!
楼主,这个修改时间有个问题,退出修改界面就不保存设置的时间了, ...
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
推荐android一键反编译神器 apkdec

我要回帖

更多关于 app自动获取root权限 的文章

 

随机推荐