app开发如何提示更※新(app显示需要更新)
今天给各位分享app开发如何提示更新的知识,其中也会对app显示需要更新进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、在app开发中怎么№实现app打开自动更新
- 2、app开〇发者需要更新此app已使其在ios13.4下正常工作,怎么破?
- 3、“App开发者◤需要更新此App以在此iOS版本上正常工作 ” 的解决办法
在app开发中怎♂么实现app打开自动更新
Android开发如何实现APP自动更新 ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ?
先来看看要实↓现的效果图:
对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用↙宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已经很大了,好不容』易我们把APP都上传完了,突然发现一个会导致应△用闪退的小Bug,这时那个崩溃啊,明明不是很大的改动,难道我们还要再去重新去把各大应用市场的版本再上传更新√一次?相信我,运营人员肯定会弄死你的!!
有问题,自然就会『有解决问题的方案,因此我们就会想到如果㊣ 在APP里内嵌自动更新的功能,那么我们将可以省去很多麻烦,当然关于这方面功能的第三方SDK有很多。
好了,言归正传,今天我¤们自己来实现下关于APP自动更新。
流程其实并不复↓杂:当用户打开APP的时候,我们让APP去发送一个检查版本的网络请求,或者利用服务端向APP推送一个透传消息来检查APP的版本,如果当前APP版本比服务∞器上的旧,那么我们就提醒用户进行下载更新APP,当然在特定的情况々下,我们也可以强制的①让用户去升级,当然这是很不友好的,尽可能的减少这样的做法。
好了,来梳理下流程,首先既然是一个APP的更新,那么我☉们就需要去下载新的APP,然后我们需要一个通知来告诉用户当前的下载进度,再来当APP安装包下载完成后,我们需要去系统的安装程序来对APP进行⊙安装更新。
知识点:
下载:异步HTTP请求Ψ文件下载,并监听当前下载进度(这里我↑采用了okhttp)
通知:Notification(具体用法请自行翻阅API文档)
安装:Intent (具体用法请自行翻阅API文档)
来看下具体实现代码:
我们需要一个后台服务来支撑App的下载
import?android.app.Notification;??
import?android.app.NotificationManager;??
import?android.app.PendingIntent;??
import?android.app.Service;??
import?android.content.Intent;??
import?android.graphics.BitmapFactory;??
import?android.net.Uri;??
import?android.os.IBinder;??
import?android.support.annotation.Nullable;??
import?android.support.v7.app.NotificationCompat;??
???
import?com.fangku.commonlibrary.utils.StorageUtil;??
import?com.zhy.http.okhttp.OkHttpUtils;??
import?com.zhy.http.okhttp.callback.FileCallBack;??
???
import?java.io.File;??
???
import?okhttp3.Call;??
???
/**?
?*?自动〒下载更新apk服务?
?*?Create?by:?chenwei.li?
?*?Date:?2016-08-14?
?*?time:?09:50?
?*?Email:?lichenwei.me@foxmail.com?
?*/??
public?class?DownloadService?extends?Service?{??
???
?private?String?mDownloadUrl;//APK的下载路▓径??
?private?NotificationManager?mNotificationManager;??
?private?Notification?mNotification;??
???
???
?@Override??
?public?void?onCreate()?{??
?super.onCreate();??
?mNotificationManager?=?(NotificationManager)?getSystemService(Service.NOTIFICATION_SERVICE);??
???
?}??
???
?@Override??
?public?int?onStartCommand(Intent?intent,?int?flags,?int?startId)?{??
?if?(intent?==?null)?{??
??notifyMsg("温馨提醒",?"文件下载失∩败",?0);??
??stopSelf();??
?}??
?mDownloadUrl?=?intent.getStringExtra("apkUrl");//获取下载APK的链接??
?downloadFile(mDownloadUrl);//下载APK??
?return?super.onStartCommand(intent,?flags,?startId);??
?}??
???
?@Nullable??
?@Override??
?public?IBinder?onBind(Intent?intent)?{??
?return?null;??
?}??
???
?private?void?notifyMsg(String?title,?String?content,?int?progress)?{??
???
?NotificationCompat.Builder?builder?=?new?NotificationCompat.Builder(this);//为了向下兼容,这里采用了v7包下的NotificationCompat来构造??
?builder.setSmallIcon(R.mipmap.icon_login_logo).setLargeIcon(BitmapFactory.decodeResource(getResources(),?R.mipmap.icon_login_logo)).setContentTitle(title);??
?if?(progress??0??progress??100)?{??
??//下载进行中??
??builder.setProgress(100,?progress,?false);??
?}?else?{??
??builder.setProgress(0,?0,?false);??
?}??
?builder.setAutoCancel(true);??
?builder.setWhen(System.currentTimeMillis());??
?builder.setContentText(content);??
?if?(progress?=?100)?{??
??//下载完成??
??builder.setContentIntent(getInstallIntent());??
?}??
?mNotification?=?builder.build();??
?mNotificationManager.notify(0,?mNotification);??
???
???
?}??
???
?/**?
?*?安装apk文件?
?*?
?*?@return?
?*/??
?private?PendingIntent?getInstallIntent()?{??
?File?file?=?new?File(StorageUtil.DOWNLOAD_DIR?+?"APP文件名");??
?Intent?intent?=?new?Intent(Intent.ACTION_VIEW);??
?intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);??
?intent.setDataAndType(Uri.parse("file://"?+?file.getAbsolutePath()),?"application/vnd.android.package-archive");??
?PendingIntent?pendingIntent?=?PendingIntent.getActivity(this,?0,?intent,?PendingIntent.FLAG_UPDATE_CURRENT);??
?return?pendingIntent;??
?}??
???
???
?/**?
?*?下载apk文件?
?*?
?*?@param?url?
?*/??
?private?void?downloadFile(String?url)?{??
???
?OkHttpUtils.get().url(url).build().execute(new?FileCallBack(StorageUtil.DOWNLOAD_DIR,?"APP文件名")?{??
??@Override??
??public?void?onError(Call?call,?Exception?e,?int?id)?{??
??notifyMsg("温馨提醒",?"文件下载失@ 败",?0);??
??stopSelf();??
??}??
???
??@Override??
??public?void?onResponse(File?response,?int?id)?{??
??//当文件下载完成后回调??
??notifyMsg("温馨提醒",?"文件下载已完∏成",?100);??
??stopSelf();??
???
???
??}??
???
??@Override??
??public?void?inProgress(float?progress,?long?total,?int?id)?{??
??//progress*100为当前文件下载进度,total为文件大小??
??if?((int)?(progress?*?100)?%?10?==?0)?{??
???//避免频繁刷新View,这里设置每下载10%提醒更新一次进度??
???notifyMsg("温馨提醒",?"文件正☆在下载..",?(int)?(progress?*?100));??
??}??
??}??
?});??
?}??
}
然后我们只需要在我们想要的更新APP的时候去调起这个服务即可,比如在系统设置里的"版本检查"等
Intent?intent?=?new?Intent(mContext,?DownloadService.class);??
intent.putExtra("apkUrl",?"APK下载地址");??
startService(intent);
总结
这里我只是粗略演示本地自动更新APP的功能,在实际应用中,我们ζ应该配合服务端来做,比如在用户♀启动APP的时候去∑比对版本号,如果版本号低于服务器的版本号,那么此时服务端应该给客户端一个透传推送,这里的推送内容应该为新版本APP的下载地址,此时就可以根据该地址来下载新版APP了,当ω 遇到重大更新,不再对老版本进行兼容的时候,可以强制用户升级,这里的方案有很多,比如调用系统级对话框,让用户没办法取消等操作▃,这里就不做更多描述。以上↓就是这篇文章的全部内容,希望对有需要的人能有所帮助。
app开发者需要更新此app已使其在ios13.4下正常工作,怎么破?
意思是说需要让app开发人员在xcode 11.4开发工具下进行编译打包发布即可。
最近随着iOS隐私协」议更新以及iOS14.6系统正式放开,很多已经安☉装的app在升级到iOS14.6或者iOS15之后在打开App时都会提示“App开发者需要更新此App以在此iOS版本上正常工作 ”,而无法正常使用。
此提示是▆因苹果正版签名(CodeSign)更新所致,导致所有之前macOS11以下系统打包的App在iOS14.6或者iOS15以上的设备会都提示需要更新才能正常工作。
ios新特性:
iOS/iPadOS 13.4 新增了九枚拟我表情贴纸,在搭载 FaceID 功能︼的机型上,进入信息应用△,并在输入栏中选择相应功能即可使用。
iCloud 云盘文〖件夹共享
iCloud 云盘文件夹共享是 iOS/iPadOS 13 的首批新功能之一,但不知道出于什么原因一直拖到 iOS/iPadOS 13.4 中才正式上线。你可以将其理解为类似于百度网∩盘的工具,如果你经常需要与同事或者家№人朋友交换文件,那么这项功能将十分受用。
以上内容参考:百度百科-IOS13
“App开发者需要更新此App以在此iOS版本上正常工作 ” 的解决办法
从iOS 14.2 beta 2开始,iOS系统将检查新的、更安全的签名格式。启动使用旧格式签名的APP用户¤会收到警告,即所有之前 macOS11 以下系统打包的App 在iOS14.6 或者 iOS15 以上的设备都会提示需要更新才能正常工作。
因此我们需要使用新格式给APP重新签名。
解决办法:
打包好的 demo.ipa 文件,备份ipa文件,然后→重命名为 demo.zip ,解压后会得到 Payload 文件夹
当前目录下执行命令
执行完签名ω 命令后,再执行命令压缩回去即可
关于app开发如何提示更新和app显示需要更新的介绍到此就※结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。