乐趣区

关于android:使用-Android-备份和恢复功能留住用户

https://www.bilibili.com/vide…

△ 应用 Android 备份和复原性能留住用户

随着挪动设施厂商一直推出新的型号,用户更换设施的频率也越来越频繁。替换新机时,最让用户头疼的问题之一就是数据迁徙了。那么不欠缺的数据迁徙会给用户带来哪些蹩脚体验呢?咱们从上面的案例来看看用户的懊恼。

Sally 的懊恼

她叫 Sally,Sally 是一位食品微生物学家,她有一份很棒的工作,这份工作让她很繁忙,甚至精疲力尽。

在实验室辛苦工作一天后回到家,她最喜爱的就是在手机上玩休闲游戏。

Sally 喜爱她的手机,她在 2017 年买了这部手机,不便她在上下班路上刷美剧 The Good Place (善地)。不过当初她次要在手机上玩游戏。然而这部手机曾经没有之前那么好用了。

Sally 去了当地的手机专卖店,经验丰富的店员 Hakeem 向她举荐了一款十分棒的新款 Android 手机。

Sally 回到家后就马上开始设置新手机,她很轻松地就将旧手机中的所有利用、照片、音讯和设置传输到了新手机,这让她感到很快乐。

传输实现后,她想看看喜爱的一些游戏在这部很棒的新手机上的运行成果。她最喜爱的休闲游戏是 Super Soccer Goalie Catch 2。她花了几个月工夫才达到 123 级,急不可待地想在新手机上买通这一关。

可怜的是,当她关上游戏时发现所有游戏进度都没有了。Sally 须要花几天工夫能力升到原来的级别,她感到很灰心丧气,她感觉不值得付出这么多工夫回到原等级。于是卸载了这款游戏,并装置了该游戏的次要竞争对手 Soccer Goalie 3D 利用。

Sally 并没有泄气,她关上了 Protein Shake Tracker 利用。Sally 喜爱喝蛋白粉,喜爱给它们打分,并跟踪本人摄入了多少养分。当 Sally 关上该利用时零碎提醒她登录,但 Sally 不记得本人的登录信息,也没有应用明码管理器。她也很确定本人曾经更换过电子邮件地址。她有些手足无措。

置信大家曾经猜到了,Sally 卸载了该利用并决定尝试另一款名为 ProteinMate 的新的杰出利用。这款利用在她的 Instagram 动静音讯上投放了大量广告。

Sally 喜爱她的新手机也喜爱手机上的大多数利用,但局部利用无奈传输之前的数据,这让她很悲观。

Javier 遇到的困惑

这是 Javier,Javier 应用 iPhone 给长辈们发消息。他的手机中有很多长辈们的照片,这对他来说意味着所有。

Javier 喜爱尝鲜,并且常常会购买新款手机。他很喜爱新买的可折叠 Android 手机的外观,这样的设计使他有更多的屏幕空间来发消息和玩游戏,并且能够向敌人们夸耀。

Javier 将他的所有利用、联系人和照片从 iPhone 手机传输到新的可折叠 Android 手机上。传输实现后,他马上关上了所用的即时通讯利用,心愿在大屏幕上看看长辈们的照片。

但他发现这款即时通讯利用并没有将 iPhone 上的音讯传输过去,这让他很受打击。他在想,或者应该换一款即时通讯利用。

当初,您可能会认为所有这些都是在分布恐慌。但在 Google 咱们对切换体验进行了大量钻研,结果显示用户对切换体验并不称心。

这是卫报近期登载的一篇文章中的一段话,与咱们的钻研后果相吻合。

△ 实在的用户反馈

这位用户将手机忘在了车顶上,当他发现游戏进度没有传输到新设施上时,就卸载了这款游戏。咱们在钻研中听到很多相似的声音。

△ 研究成果摘要

这是咱们钻研后果的总结。让用户感到不解的是,利用不能连续旧手机原有的状态。他们对本人的集体数据失落感到不安,用户不会嗔怪 Android 或 OEM,而会嗔怪利用或他们本人。

在新机配置过程中只有 30% 的设施以新设施进行设置,绝大多数用户心愿可能将旧手机中的数据传输到新设施。如果不能这样做,用户会感到不安,从而导致 Play 商店中的利用评分升高,并间接造成用户散失。

不要像这位开发者一样,齐全不理解为什么用户会散失。这些用户是您一开始努力争取到的,当用户更换新设施时,肯定要留住他们。

侥幸的是,在 Android 上将利用数据传输到新设施非常简单,甚至能够收费将数据备份到云端,通过用户信赖的高质量利用,帮忙您扩充用户群,最终增加收入。

对于 Android 备份和复原

咱们来看两种用例: 从 iOS 切换到 Android 和从 Android 切换到 Android。

如果用户之前应用的是 iOS 手机,能够用数据线将旧手机连贯到新的 Android 设施,而后进行设施到设施的迁徙,简称 D2D。在 D2D 期间咱们将查看用户的 iOS 设施上有哪些利用,而后尝试在 Play 商店中找到对应的 Android 利用,并主动装置这些利用。对于局部利用,还能够传输利用数据。如果您对 iOS 和 Android 版利用之间的数据传输感兴趣,请通过该 电子邮件地址 分割咱们。

△ 通过数据线连贯设施进行备份和复原

对于从 Android 切换到 Android 的用例,用户也能够通过数据线连贯设施。咱们将从新下载用户的所有利用,并为每个参加备份和复原的利用传输多达 2GB 的数据。

△ 云备份中复原数据

如果用户的旧设施目前不在身边,则能够从之前创立的云备份中复原数据。这是因为 Android 设施上的利用数据会定期备份到云端。这些利用数据备份在运行 Android Pie 及更高版本的设施上受到端到端加密爱护,前提是用户已设置用于解锁屏幕的 PIN 码、图案或明码。在这种模式下,咱们将为设施上的每个相干利用备份多达 25MB 的数据。

Android M 及更高版本上的所有利用都已启用了备份和复原,除非您明确抉择禁用该性能。您能够很轻松地管制和自定义所需的行为,咱们将在稍后介绍如何做到这一点。

在这里您可能会想,我曾经应用某种解决方案来放弃用户数据同步到云端。比方 Firebase 或自定义后端,为什么还须要备份和复原?

首先,为了应用利用内云同步性能用户须要登录到您的利用。而备份和复原性能解决的数据在此之前就曾经可用,因为咱们曾经通过用户的 Google 帐号辨认用户的身份。

其次,兴许是更重要的一点,有很多数据是设施独有的,而不属于利用中的帐号。利用通常不会将这些数据同步到云端。例如,假如您有一个入门教程,在每个设施上显示一次而不是每个帐号中如此。或者,假如您的利用中有一个设置屏幕,用户能够通过设置自定义利用在此特定设施上的外观和行为。这样的例子还有很多。

但重点在于,当用户首次在新手机上启动利用时,他们真的心愿所有这些首选项都曾经正确配置。当初,咱们来看看如何为 Android 利用配置备份和复原。

主动备份 (Auto Backup)

默认状况下,所有利用都参加主动备份。这意味着,您的大部分利用数据将蕴含在云备份和 D2D 传输中。咱们将只排除缓存目录和非凡的非备份文件夹,您能够在其中搁置不心愿备份或传输的内容。

自定义主动备份

这是主动备份中能够自定义的配置:

  • 设置规定规定云备份或设施传输中应蕴含哪些文件或目录
  • 指定只有当设施反对端到端 (E2E) 加密时,才须要进行云备份
  • 为云端和 D2D 设置不同的规定

要实现所有这些工作,只需创立一个蕴含所需配置的 XML 文件。

<data-extraction-rules>
    <cloud-backup disableIfNoEncryptionCapabilities=”true”>
        <exclude path=”my_prefs/device_specific_prefs”/>
        <exclude path=”downloaded/temp”/>
    </cloud_backup>
    <device-transfer>
        <exclude path=”my_prefs/device_specific_prefs”/>
    </device-transfer>
</data-extraction-rules>

如上述代码所示,该配置蕴含两个局部: 一部分用于云备份,另一部分用于设施传输。在每个局部中,能够设置要排除或蕴含哪些文件或目录的规定。

<data-extraction-rules>
    <cloud-backup disableIfNoEncryptionCapabilities=”true”>
        <exclude path=”files/my_firebase_token”/>
        <exclude path=”files/downloaded”/>
    </cloud_backup>
    <device-transfer>
        <exclude path=”my_prefs/device_specific_prefs”/>
    </device-transfer>
</data-extraction-rules>

在本例中,咱们将 Firebase 推送令牌排除在云备份之外,因为它在任何其余设施上都无奈应用。将特定设施之外无奈复用的数据排除是十分正当的。咱们还排除了一个较大的可下载文件,如果能够很容易地从某个地位从新下载特定的数据,那么将其蕴含到云备份中毫无意义。

此外,对于云备份,咱们已将 disableIfNoEncryptionCapabilities 标记设置为「true」。这意味着,除非提供端到端加密,否则不会将数据备份到云端。

最初,咱们为设施到设施传输定义了更宽松的配置,因为在这个过程中不波及云存储。

<uses-sdk android:targetSdkVersion=”31”/>
<application
        ... 
        android:dataExtractionRules=”my_rules.xml”>

实现配置后,须要应用 dataExtractionRules 属性在 AndroidManifest 文件中指向该配置。另外,不要忘了将 Android 12 作为指标平台,因为该属性是从这个版本才引入的。

如需获取无关配置主动备份的更具体阐明,请参阅 官网文档。

键值对备份 (Key/Value Backup)

接下来,咱们简略看一下我后面提到的另一种办法,即键值对备份 (K/V backup)。

void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
                ParcelFileDescriptor newState) {
       boolean isEncrypted = data.getTransportFlags
             & BackupAgent.FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED
       boolean isD2d = data.getTransportFlags
             & BackupAgent.FLAG_IS_DEVICE_TO_DEVICE_TRANSFER
       if (isEncrypted || isD2d) {// 在这里蕴含须要备份的数据: 要么应用端到端加密,要么不上传任何数据到云端}
}

在这里,须要扩大一个名为 BackupAgent 的类,并实现您心愿的备份和复原行为。作为备份事件的一部分您能够查看雷同的条件,比方是否提供端到端加密以及以后正在进行的操作是云备份还是设施传输,以便更好地确定应该包含哪些键值对。

<application
        ... 
        android:backupAgent=”MyBackupAgent”>

同样,当备份代理就绪后,不要忘了在 AndroidManifest 中指向该代理。如果您对键值对备份感兴趣,请参阅 实现键值对备份的散布指南。

应用 BlockStore 传输用户凭证

接下来咱们介绍一个特定类别的利用数据。当用户在新设施上启动一款利用时,面临的最大阻碍之一是再次登录。用户甚至有可能不记得本人的登录名和明码。如果您的利用可能自动识别用户,让他们可能从旧设施上来到利用的地位持续,这不是很好吗?

为了实现这一点能够应用 BlockStore。它容许您将辨认用户身份所需的任何登录凭据传输到新设施作为设施到设施迁徙的一部分。BlockStore 不依赖主动备份和键值对备份等性能。即便您不应用备份和复原进行任何其余操作,仍能够应用 BlockStore 来传输身份验证令牌。咱们疾速理解一下它是如何工作的。

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* 二进制数组 */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG,“Stored: ${result.getBytesStored()}”)
        }

每当用户登录到您的利用并生成一个身份验证令牌或任何其余登录凭据时,只需将这些数据保留到 BlockStore 中,BlockStore 将对这些数据进行加密并平安存储。

val client = Blockstore.getClient(this)
client.retrieveBytes()
        .addOnSuccessListener{ result ->
            Log.d(TAG,“Retrieved: ${String(result)}”)
}

在实现设施到设施迁徙后,当您的利用在新设施上启动时,您能够向 BlockStore 申请之前保留的凭据,并在不要求用户输出登录名和明码的状况下登录利用。

如需理解无关 BlockStore 的更多信息,请参阅。

测试

在您依据须要实现所有配置后,无论是应用主动备份还是键值对备份,都应进行一些测试,以确保在复原后首次启动利用时,取得所需的状态,这一点十分重要。

测试非常简单,您能够通过非凡的工作流应用单个设施或模拟器专门模仿利用的云备份和设施到设施传输。

如需取得对于测试的具体阐明,请参阅 官网文档。

继续更新您的实现形式

最初,使您的配置放弃最新版本同样很重要。随着利用一直演变并减少新性能,请确保备份和复原涵盖新增的内容。如果您应用的是主动备份可能不须要执行任何操作,默认状况下会蕴含所有新数据。如果您应用的是键值对备份,请更新 BackupAgent 以蕴含任何相干的信息。

对于 Android 12 的重要更新

利用开发者向咱们反馈,他们放心 adb 备份会导致利用数据轻易被提取。为了解决这个问题,咱们曾经敞开了所有利用的 adb 备份。因而,启用备份和复原不会使您的利用受到 adb 备份的影响。但您依然能够依据须要将 adb 备份用于测试和开发目标。

其次,咱们引入了 dataExtractionRules 配置,作为管制主动备份的新办法。咱们正在逐渐淘汰旧的办法,即 allowBackup 标记和 fullBackupContent 配置。建议您在 Android 12 及更高版本中应用 dataExtractionRules。同时为晚期操作系统版本保留 fullBackupContent 配置。

如需取得上述更新的具体阐明,请参阅 官网文档。

总结

我置信当您的利用数据同步到新设施上时是非常令人振奋的。好消息是,目前已有超过 20 亿台 Android 设施反对收费备份到云端。从 2022 年 1 月起 Wi-Fi 和数据线传输将扩大到所有新的 Android 设施。所有这些都将默认失效,建议您确保这些性能已开启。如果您有大量数据或敏感数据,能够对导出的内容进行微调。不要忘了新的 BlockStore API,您能够应用它平安地解决明码。

  • 更多信息
  • 分割咱们

心愿这些内容对您有帮忙,同时心愿您利用备份和复原为用户提供更好的体验。

欢迎您 点击这里 向咱们提交反馈,或分享您喜爱的内容、发现的问题。您的反馈对咱们十分重要,感谢您的反对!

退出移动版