Google Play 商店将提供现金购买、部分下载即可使用大型 app 等新功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Play 商店将提供现金购买、部分下载即可使用大型 app 等新功能相关的知识,希望对你有一定的参考价值。
参考技术AGoogle将在更多地区推广,透过邻近便利商店以现金完成付款的付费app交易模式,另外也将提供让使用者只需下载部分档案即可开始使用的androidAppBundle功能,避免花太多时间下载大型软体。
同时也预计让大容量app可更快下载
在稍早向开发者提供的第三版支付资料库(BillingLibrary)中,Google除了准备让更多人能直接以现金方式支付GooglePlayStore下载内容,同时也计画让开发者能以兑换序号形式让使用者更容易体验订阅服务内容。另外,针对需要花费长时间下载的大容量app,Google也预计让开发者能以AndroidAppBundle形式发行内容,并且让使用者能以更短时间下载使用app。
Google在去年就已经开始测试让使用者能透过QRC,在邻近便利商店以现金完成付款的付费app交易模式,让无法申办信用卡,或是习惯以现金交易的使用者也能顺利购买GooglePlayStore收录的付费app。
目前此付费模式仅先在印尼与马来西亚提供,此次宣布整合进第三版支付资料库,并且让更多开发者使用,意味Google未来会在更多地区推行此付费交易方式。
另外,虽然Google已经推行免安装即可使用的Instantapp设计方案,让使用者无需事先下载就能体验、使用特定app功能,一旦满意再将app实际下载到手机。但如果是订阅使用的app内容,使用者基本上还是要先下载app,才能在app内输入推广序号,或是透过点按操作申请试用。
为了改善此状况,Google将允许开发者让此类app可以无需下载形式,直接让使用者快速体验,甚至无需额外手动输入推广序号。
而针对Instantapp设计方案同样无法对应大容量app,导致使用者依然要花费长时间下载的情况,Google在2018年举办的GoogleI/O就已经提出名为AndroidAppBundle的方案,让使用者能先下载app必要内容,并且透过副档名为.aab的封包存放关连档案内容。
如此一来即可让使用者以更短时间下载app,并且在必要时候,或是在其他闲置情况下继续下载关连档案,而不必为了使用档案容量超过500MB的app,必须花费时间等待下载。
这样的形式下,开发者依然可以透过APK档案形式将包含必要内容的app上传至GooglePlayStore,并且支援透过AndroidStudio、Unity或Flutter等开发平台发行内容,并且相容于Arm、Arm64或x86架构装置使用。
不过,Google预期要等到2021年才会开始让容量超过500MB的大型app借由AndroidAppBundle形式下载,现阶段主要是让开发者调整旗下app提供下载使用模式。
TaggedBillingLibrary,GooglePlay,GooglePlayStore
更新 Android 应用(无需访问 Google Play 商店)
【中文标题】更新 Android 应用(无需访问 Google Play 商店)【英文标题】:Update an Android app (without Google Play store visit) 【发布时间】:2013-02-19 05:29:44 【问题描述】:我编写了该应用程序的 Beta 版。它将可以通过网络下载(我不会将其发布到 Play 市场)。当新版本发布时,是否可以在不访问 Play Market 的情况下更新此应用程序?
【问题讨论】:
是的,这是可能的。除此之外,您尝试过什么?你希望它走多远?自动更新下载和安装?还是打开浏览器下载安装? 感谢您的回答,但 Blumer 已经通过代码示例给了我答案。我认为就我的情况而言,这就足够了。再次感谢) @IQW 您能否显示代码您尝试了什么,因为我有同样的问题我需要从一个域检查我已经上传了我的 apk 并检查是否有新版本? 【参考方案1】:当然。但是,您需要构建一种机制,让您的应用程序调用服务器,找出是否有更新版本的应用程序,如果有,将其拉下并安装。一旦您确定确实需要拉下更新,您可以使用类似于此 AsyncTask 的内容来执行此操作:
protected String doInBackground(String... sUrl)
String path = "/sdcard/YourApp.apk";
try
URL url = new URL(sUrl[0]);
URLConnection connection = url.openConnection();
connection.connect();
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(path);
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1)
total += count;
publishProgress((int) (total * 100 / fileLength));
output.write(data, 0, count);
output.flush();
output.close();
input.close();
catch (Exception e)
Log.e("YourApp", "Well that didn't work out so well...");
Log.e("YourApp", e.getMessage());
return path;
// begin the installation by opening the resulting file
@Override
protected void onPostExecute(String path)
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive" );
Log.d("Lofting", "About to install new .apk");
this.context.startActivity(i);
【讨论】:
问题:“publishProgress((int) (total * 100 / fileLength));”会发生什么?这个 Methode 将在哪里被调用,它在做什么?提前致谢。 之后apk会被自动删除吗? 如果您使用此解决方案需要考虑几点:1) 是的,它必须是外部存储 - 内部不在应用程序之间共享,并且对“安装应用程序”不可见 2) 您不能使用内容提供程序,因为“安装应用程序”不支持此功能(需要为 file://...)和 3)您可能希望使用Environment.getExternalStorageDirectory()
而不是硬编码路径。否则此解决方案有效,谢谢!
如果没有寻求额外的权限,我可以禁止用户提示吗?
对于 Android N 我必须添加文件提供程序或严格模式:***.com/questions/38200282/…【参考方案2】:
是的,这是可能的,大致可以这样做:
获取当前应用程序版本代码
PackageInfo packageInfo = getPackageManager().getPackageInfo(context.getPackageName(), 0);
int curVersionCode = packageInfo.versionCode;
拥有一台服务器,您可以在其中托管 apk 文件并创建一个简单的纯文件,该文件仅包含一个整数,表示最新的应用程序版本代码。
当应用程序启动时(或当您想要检查更新时),从服务器(即通过 HTTP 请求)检索最新版本代码并将其与当前应用程序版本进行比较。
如果有新版本,请下载 apk 并安装(将为用户提示一个对话框)。
编辑:
您可以为此使用@Blumer 的代码。
【讨论】:
在我的应用程序中使用 Blumer 的代码。该应用程序正在成功下载并安装,但当我再次打开时,它会弹出错误消息There was a problem parsing the package
。请在这里帮助我***.com/questions/48313766/…【参考方案3】:
这是可能的,但请记住,用户必须在其设置中启用“允许安装非市场应用程序/未知来源”。
【讨论】:
您知道如果在上传应用时禁用上述设置会发生什么吗? 上传到哪里?市场?它是设备上的设置,不在二进制文件或市场中。这就是我的意思:tech-recipes.com/wp-content/uploads/… 对不起。拼写错误。我想说的是“更新”而不是“上传”。因此,当应用程序有更新并且当时上述设置的状态为“禁用”时会发生什么。它是否自动允许更新或用户明确需要再次设置上述设置“启用”。 据我所知:您可以下载 apk,但无法安装它。但它值得检查当前的事态。我认为谷歌想要完全禁止那些自行发起的更新。 在 Oreo(也可能是旧版本)上,如果您没有设置该权限,操作系统会告诉您这是必需的,并将您带到适当的设置。您可以从那里配置可以从未知来源安装的应用程序列表 - 用户需要设置您的应用程序以允许这样做【参考方案4】:仅供参考,我刚刚在 http://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users/?hn 上读到过这个
Evolve 是一个供 Android 开发人员使用的库,可让他们部署新的 无需通过 Google Play 或询问用户的应用版本 下载更新。它通过使用反射和动态来工作 生成字节码以“诱骗”Android 运行新代码。
虽然它是 alpha 版,但似乎可以通过很多圈子实现。我怀疑它是否值得,除了恶意软件。
【讨论】:
【参考方案5】:Official support/library for In-app updates Google play core
应用内更新是一项Play 核心库 功能,可提示活跃用户更新您的应用。 运行 Android 5.0(API 级别 21)或更高版本的设备支持应用内更新功能,并且需要您的应用使用 Play Core library 1.5.0 或更高版本。此外,只有 Android 移动设备、Android 平板电脑和 Chrome 操作系统设备支持应用内更新。以下是更新流的类型
-
Flexible updates(示例屏幕)
-
Immediate updates(示例屏幕)
Reference :-More about this topic
【讨论】:
以上是关于Google Play 商店将提供现金购买、部分下载即可使用大型 app 等新功能的主要内容,如果未能解决你的问题,请参考以下文章
Google Play商店为预注册的游戏和应用提供自动安装功能