作家
登录

程序猿如何从产品的角度去提升应用的体验之Android权限优化篇

作者: 来源: 2017-07-26 15:17:21 阅读 我要评论

IMPL是一个实现了Impl接口的实现类对象,并且在静态代码块中经由过程断定手机体系所应用的版本号来初始化不合的实现类:

媒介:大年夜家日常平凡在开辟的过程中是否会碰到这种情况:很多产品体验上的细节,特别是涉及到技巧相干的细节,产品与设计可能并不会给出具体的解决筹划,甚至可能并不太存眷这方面的体验细节。例如,应用的缓存清理机制该怎么实现?权限申请的机会应当放在哪?用户没有赐与应用须要的权限该怎么处理......这种时刻,作为一个开辟人员,特别是对自家产品的应用体验有寻求的开辟人员,其实完全可以充当一回产品,大年夜产品的角度出发去思虑,该如何在技巧实现的细节上,让自家的APP体验变得更好。切切不要小瞧这些细节,一个产品的极致体验,就是由无数的细节堆砌而成的。

1. 应用通知权限的优化

众所周知,推送对于一个APP来说是很重要的功能。推送在好的产品设计中可以有效地进步产品活泼度,增长用户的忠诚度以及留存率。然则,用户有可能会在无意中把应用的通知权限给禁止了,导致收不到推送(用户主动禁止应用的通知权限除外)。例如,华为手机会在通知中间直接提示用户是否关掉落某个应用的通知权限。如不雅用户,特别是小白用户一不当心把通知权限给禁止了,导致应用收不到推送,反而可能还会把这种情况当做bug来向客服反馈(任何时刻都切切不要高估用户对于智妙手机应用的懂得,尤其是你的APP的目标用户还包含中老年人的时刻)。

如不雅大年夜家有细心不雅察的话会发明,当应用的通知权限被禁止的时刻,体验好的应用会在恰当的机会以及场景下出现提示,告诉用户通知在应用中起到的感化,测验测验去清除用户的不信赖和谨慎心理,并引导用户去打开通知权限。

那么,我们怎么知道本身的应用法度榜样通知权限被禁止了呢?如不雅被禁止了又该怎么办呢?下面就来说一下解决筹划。

1.1 检测应用的通知权限状况

检测应用的通知权限其实比较简单。经由过程萌芽 官方文档 可以发明,在support库的API 24.0.0 版本,已经有现成的办法可以直接萌芽应用的通知权限状况:

在5.0以上,可以直接跳转到某个应用的通知权限快捷设置界面。然则在5.0以下,临时还没有找到可以直接跳转到通知权限设置界面的办法,所以今朝的做法是跳转某个应用的设置界面,在设置界面列表中应当会有通知权限治理的人口。如不雅你有更好的做法,迎接在评论中指出来。这里再别的抛出一个问题,供大年夜家思虑:关于通知权限提示的筹划,应当在什么机会或场景下出现好?出现提示的频率为若干好呢?是只提示一次呢,照样只要用户没打开通知权限就一向提示呢?迎接大年夜家在留言中说出本身的看法。

  1. NotificationManagerCompat.from(this).areNotificationEnable(); 

然则,这就意味着应用的 compileSdkVersion 也须要与support库的版本保持一致。如不雅应用今朝所应用的compileSdkVersion 低于 24.0.0 或者因为某些汗青原因而不克不及将compileSdkVersion 升到 24.0.0以上,那么就没有办法检测到应用的通知权限了吗?

其实,办法照样有的。经由过程查看体系源码,可以发明,NotificationManagerCompat.from(this).areNotificationEnable() 这个办法在不合版本的SDK上会有不合的实现。

  1. /** 
  2.  
  3. Returns whether notifications from the calling package are not blocked. 
  4.  
  5. */ 
  6.  
  7. public boolean areNotificationsEnabled() {  
  8.     return IMPL.areNotificationsEnabled(mContext, mNotificationManager); 
  9.  
  10.  

当手机体系Android版本小于4.4.0的时刻, areNotificationEnable()办法会默认返回true。所以,此办法只有在4.4.0以上的手机体系上才能返回精确的结不雅。

  1. /** 
  2.  * Returns whether notifications from the calling package are blocked. 
  3.  */ 
  4. public boolean areNotificationsEnabled() { 
  5.     INotificationManager service = getService(); 
  6.     try {        return service.areNotificationsEnabled(mContext.getPackageName()); 
  7.     } catch (RemoteException e) { 
     1/4    1 2 3 4 下一页 尾页

      推荐阅读

      现代前端开发技术栈

    这篇文┞仿将会介绍以前几年 JavaScript 开辟方面的概绫屈性成长。比来几年,应用开辟的办法论产生了翻禀赋地的变更。跟着微办事架构、云计算、单页应用和响应式设计的鼓起和成长,在包管>>>详细阅读


    本文标题:程序猿如何从产品的角度去提升应用的体验之Android权限优化篇

    地址:http://www.17bianji.com/lsqh/36417.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)