月度归档:2017年08月

Google Search Console

配置 Google Analytics 时会收到通知,建议关联 Google Analytics 和 Search Console。如下图所示:

Google Search Console 是由 Google 提供的一项免费服务,可帮助您监控和维护自己网站在 Google 搜索结果中的显示情况。您无需注册 Search Console,您的网站也可以出现在 Google 搜索结果中,但注册有助于您了解 Google 如何找到您的网站并优化其在搜索结果中的显示效果。

添加属性

打开 Google Search Console 首页,如下图所示:

点击添加属性来添加你的网站,如下图所示:

验证添加完成。

提高在搜索结果中的展现率

一般在添加一个网站后会收到一封站内邮件,如下所示:

顺序处理1-5,

  1. 需要你同时在 Search Console 中添加 http://www.example.com 、http://example.com、https://www.example.com、https://example.com 四个网站。
    这需要你的网站同时可以解析 www 和 non-www 两个版本。我这里是在 DNS 解析的设置里配置两条记录,如下图所示:

    第1条 @ 记录匹配 non-www 版本,第4条 www 记录匹配 www 版本。
  2. 点击设置首选版本按钮跳转到设置页面,点击右上角的网址来进行网站的切换。在网站设置里进行设置。如下图所示:
  3. 跳过,因为我不介意你来自哪里。
  4. 跳过,没有别的用户。
  5. 你需要先生成一个地图文件,即 Sitemap。
    这里使用 Yoast SEO 这个插件。
    首先在插件的设置里打开高级设置页面,如下图所示:

    然后插件的设置边栏里就会多出一个 XML Sitemaps 的选项,打开它:

    点击 XML Sitemap,获取地址:

    然后把 sitemap_index.xml 填入 Search Console 的设置里,点击提交就 OK 啦。如下图:

在运行时请求权限

背景资料

https://developer.android.com/training/permissions/requesting.html?hl=zh-cn

从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限。它还让用户可以对应用的功能进行更多控制;例如,用户可以选择为相机应用提供相机访问权限,而不提供设备位置的访问权限。用户可以随时进入应用的“Settings”屏幕调用权限。

流程

下面是我根据自己的理解画的流程图。

在运行时请求权限流程图

详细的步骤具体说明在安卓开发者网站上 https://developer.android.com/training/permissions/requesting.html?hl=zh-cn#perm-request 已经有详细的中文说明。

PermissionsDispatcher

PermissionsDispatcher 是一个用来简化系统运行时权限逻辑的库。GitHub 地址是 https://github.com/hotchemi/PermissionsDispatcher

下面简单介绍下用法。

安装

在 build.gradle 中添加

dependencies {
  compile("com.github.hotchemi:permissionsdispatcher:${latest.version}") {
      // if you don't use android.app.Fragment you can exclude support for them
      exclude module: "support-v13"
  }
  annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:${latest.version}"
}

使用

PermissionsDispatcher 主要通过注解来简化运行时权限的逻辑处理。注解如下:

Annotation Required Description
@RuntimePermissions Register an Activity or Fragment(we support both) to handle permissions
@NeedsPermission Annotate a method which performs the action that requires one or more permissions
@OnShowRationale Annotate a method which explains why the permission/s is/are needed. It passes in a PermissionRequest object which can be used to continue or abort the current permission request upon user input
@OnPermissionDenied Annotate a method which is invoked if the user doesn’t grant the permissions
@OnNeverAskAgain Annotate a method which is invoked if the user chose to have the device “never ask again” about a permission

对应流程图的结果如下,使用的时候把相应逻辑处的代码声明为带注解的函数即可:

PermissionsDispatcher

shouldShowRequestPermissionRationale 的两次使用

这个方法用了两次,分别在请求权限之前和被拒绝授予权限之后。

  1. 请求权限之前
    为了判断是否需要向用户展示申请权限的理由。
    如果该值为 false,则是第一次向用户申请权限,没必要加多余的解释;
    而如果该值为 true,则表示用户曾经拒绝过授予,有必要向用户做一些相应的解释。
  2. 被拒绝授予权限之后
    为了判断是否需要手动引导用户到设置里授予权限。
    如果该值为 true,说明以后还有机会向用户申请,现在可以运行其他的功能;
    而如果该值为 false,则说明用户勾选了不再询问的复选框,你已经没机会向用户申请该权限了,你需要引导用户到设置里手动打开。

EasyPermissions

谷歌出品的权限库,也可以供参考。GitHub 地址是:https://github.com/googlesamples/easypermissions。