精华内容
下载资源
问答
  • Ionic3 Android 检测并下载安装app

    千次阅读 2017-09-22 17:36:05
    在应用不被发布到应用超市的情况下,而又想实现提醒用户升级APP,除了客户端要获取版本外,还需要服务器有API可以获取到当前维护进来的最新的APP版本号,以及最新的下载地址,废话不多讲了,上代码 首先准备工作,...

    在应用不被发布到应用超市的情况下,而又想实现提醒用户升级APP,除了客户端要获取版本外,还需要服务器有API可以获取到当前维护进来的最新的APP版本号,以及最新的下载地址,废话不多讲了,上代码

    首先准备工作,安装需要的插件

    1. 1、安装File,用于文件目录读取
      $ ionic cordova plugin add cordova-plugin-file$ npm install --save @ionic-native/file
      2、安装Version,,用于获取当前app版本
      $ ionic cordova plugin add cordova-plugin-app-version$ npm install --save @ionic-native/app-version
      3、安装transfer插件,用于下载服务器apk
      $ ionic cordova plugin add cordova-plugin-file-transfer$ npm install --save @ionic-native/file-transfer
      4、安装opener2,用于打开指定目录的apk进行安装
      $ ionic cordova plugin add cordova-plugin-file-opener2$ npm install --save @ionic-native/file-opener

    准备工作就绪后,开始写实现代码如下:
    1、在app.module.ts中引入几个插件
    添加到providers中

    2、在NativeService.ts中实现提示更新、下载apk、打开apk文件进行安装,同样引入几个插件


    3、 检查app提示是否升级
           
    detectionUpgrade(apkUrl, allowChoose) {
    	if (allowChoose) {
    		this.alertCtrl.create({
    			title: '升级提示',
    			subTitle: '发现新版本,是否立即升级?',
    			buttons: [{
    				text: '取消'
    			}, {
    				text: '确定',
    				handler: () => {
    					this.downloadApp(apkUrl);
    				}
    			}]
    		}).present();
    	} else {
    		this.downloadApp(apkUrl);
    	}
    }
    4、下载安装app
    downloadApp(apkUrl) {
        let alert = this.alertCtrl.create({
            title: '下载进度:0%',
            enableBackdropDismiss: false,
            buttons: ['后台下载']
        }); 
        alert.present();
        
        const fileTransfer: FileTransferObject = this.transfer.create();
        const apk = this.file.externalRootDirectory + 'app.apk'; //apk保存的目录
        fileTransfer.download(apkUrl, apk).then(() => {
            this.fileOpener.open(apk, 'application/vnd.android.package-archive').then(() =>{
                console.log('File is opened')
            }).catch(e => {
                console.log('Error openening file', e)
            });
        });
        fileTransfer.onProgress((event: ProgressEvent) => {
            let num = Math.floor(event.loaded / event.total * 100);
            if (num === 100) {
                alert.dismiss();
            } else {
                let title = document.getElementsByClassName('alert-title')[0];
                title && (title.innerHTML = '下载进度:' + num + '%');
            }
        });
    }
    5、检测是否有新版本,需要服务器提供API检测最新版本
    import { Component } from '@angular/core';
    import { Platform } from 'ionic-angular';
    import { StatusBar } from '@ionic-native/status-bar';
    import { SplashScreen } from '@ionic-native/splash-screen';
    import { Storage } from '@ionic/storage';
    import { NativeService } from './../providers/NativeService';
    import { AppUpdateService } from '../providers/AppUpdateService';
    import { AppVersion } from '@ionic-native/app-version';
    
    @Component({
        templateUrl: 'app.html'
    })
    export class MyApp {
        rootPage: any = 'page-tabs';
        constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private s: Storage,
                    private ns: NativeService, private aus: AppUpdateService, private appVersion: AppVersion) {
            platform.ready().then(() => {
                statusBar.styleDefault();
                splashScreen.hide();
                this.appVersion.getVersionNumber().then((version: string) => {
                    this.aus.compariVersion(version).subscribe(data => {
                        if (data.httpCode == 200) {
                            if (data.data.latestVersion != null && data.data.latestVersion !== version) {
                                this.ns.detectionUpgrade(data.data.androidDownload, true); //提示升级
                            }
                        }
                    });
                }).catch(err => {
                    console.log('getVersionNumber:' + err);
                });
            });
        }
    }




    展开全文
  • Android app下载并安装

    千次阅读 2018-02-24 17:50:42
    下载功能//下载apk private void downloadApk(String apkUrl) throws PackageManager.NameNotFoundException { Uri uri = Uri.parse(apkUrl); DownloadManager downloadManager = (DownloadManage...

    1  下载功能

    //下载apk
        private void downloadApk(String apkUrl) throws PackageManager.NameNotFoundException {
    
            Uri uri = Uri.parse(apkUrl);
            DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
            DownloadManager.Request request = new DownloadManager.Request(uri);
            // 设置允许使用的网络类型,这里是移动网络和wifi都可以
            request.setAllowedNetworkTypes(request.NETWORK_MOBILE | request.NETWORK_WIFI);
            //设置是否允许漫游
            request.setAllowedOverRoaming(true);
            //设置文件类型
            MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
            String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(apkUrl));
            request.setMimeType(mimeString);
            //在通知栏中显示
            request.setNotificationVisibility(request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            request.setTitle("download...");
            request.setVisibleInDownloadsUi(true);
            //sdcard目录下的download文件夹
            request.setDestinationInExternalPublicDir("/download", "SanjuScanApp_Android.apk");
            // 将下载请求放入队列
            downloadManager.enqueue(request);
        }


    2  设置接收广播

    public class InstallReceiver extends BroadcastReceiver {
    
        // 安装下载接收器
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
                installApk(context);
            }
        }
    
        // 安装Apk
        private void installApk(Context context) {
    
            try {
                Intent i = new Intent(Intent.ACTION_VIEW);
                String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/download/SanjuScanApp_Android.apk";
                i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }

    3  注册广播(AndroidManifest.xml的receiver节点)

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.tyler.myapplication">
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
        <application>
            <activity
                android:name=".LoginActivity"
            </activity>
            
            <receiver
                android:name="com.example.tyler.HelperTool.InstallReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
                </intent-filter>
            </receiver>
        </application>





    展开全文
  • H5网页判断是否安装APP并调起APP

    千次阅读 2019-09-29 18:43:16
    通常情况下,如果公司有APP则前端需要做的就是给APP下载做引流,即在一些活动页中做下载引导。 可是在做下载引导的时候我们通常会遇到一个问题就是: 如何查看是否安装APP 网页端如何调起此APP 比如:调起某...

    通常情况下,如果公司有APP则前端需要做的就是给APP下载做引流,即在一些活动页中做下载引导。

    可是在做下载引导的时候我们通常会遇到一个问题就是:

    • 如何查看是否安装此APP
    • 网页端如何调起此APP

    比如:调起某公司的APP只需要链接到 mathwallet://mathwallet.org 即可
    可是如果没有安装此APP则点击按钮就没有任何反应了,具体怎么判断是否安装了呢?请看以下代码

    <a href="javascript:;">在APP中打开</a>
    
    <script type="text/javascript">
    // 判断终端,此处也列了一些判断其他终端的方法
    var browser={
      versions:function(){
        var u = navigator.userAgent, app = navigator.appVersion;
        return {
          trident: u.indexOf('Trident') > -1, //IE内核
          presto: u.indexOf('Presto') > -1, //opera内核
          webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
          gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
          mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
          ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
          android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
          iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
          iPad: u.indexOf('iPad') > -1, //是否iPad
          webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
          weixin: u.indexOf('MicroMessenger') > -1, //是否微信
          qq: u.match(/\sQQ/i) == " qq", //是否QQ
        };
      }()
    }
    
    // --------------------下面代码才是重点--------------------
    
    $('a').on('click',function(){
      // 微信目前不支持打开非企鹅应用,所以先判断是否在微信中打开此页面
      if(browser.versions.weixin){
        alert('点击右上角选择在浏览器中打开')
      }else{
        // 调起APP
        window.location.href="mathwallet://mathwallet.org"
    
        // 如果超时证明没有安装此APP则跳到下载页
        window.setTimeout(function() {
          window.location.href="http://mathwallet.xyz"
        }, 1000)
      }
    })
    </script>
    
    

    虽然解决了问题,但是此方法有一个不足的地方(BUG):
    无论是否安装APP,引导下载的页面都会跳转到下载页
    如果安装了APP则会直接打开APP,因此也不会在意之前的页面会不会跳转(强迫症患者可能会在意)

    我的个人博客有空来坐坐

    https://www.wangyanan.online

    展开全文
  • 1.在iosAPP下载安装时,如果出现此时无法下载安装APP的字样时,可能是苹果系统进行了支持更新,需要我们确认条约。至于如何判断是否是苹果系统进行了更改,只需要我们进入开发者账号,进入我的账户(Account)如...

    欢迎加入Unity业内qq交流群:956187480

    qq扫描二维码加群


    1.在iosAPP下载安装时,如果出现此时无法下载安装APP的字样时,可能是苹果系统进行了支持更新,并需要我们确认条约。至于如何判断是否是苹果系统进行了更改,只需要我们进入开发者账号,进入我的账户(Account)如出现以下视图:

    则说明苹果系统进行了更新。
    此时只需要点击Review Agreement 按钮,进入查看其具体条款,勾选服从其条约,然后单击同意即可。
    然后可以再重新将APP打包上传到公司网站,然后即可进行下载安装操作。
    2.如果不是手机版本最新版本,可以尝试更新到最新版本试一下。
    其他一些可能导致应用无法安装的原因:
    原因一:在导出 iOS App 的安装包文件(.ipa文件)时,选择了 App-Store 方式。
    在导出 iOS 的 .ipa 文件时,有些开发者选择了 App-Store 方式,这种方式导出的 .ipa 文件,只适合于上传到苹果 App Store,并不能通过蒲公英来安装。如果是这种方式导出的 .ipa文件,传到蒲公英上时,蒲公英会显示“App-Store版”,这种版本是不能通过蒲公英安装的。
    原因二:在导出 iOS App 的安装包文件(.ipa文件)时,选择了 Ad-hoc 方式,但是没有添加设备 UDID。
    在导出 iOS 的安装包文件时,如果选择了 Ad-hoc 方式(一般用于苹果个人开发者账户),那么,如果要某台设备可以安装,则必须要将这台设备的 UDID 添加到导出安装包时所用的证书文件中(. mobileprovision文件),才可以在这台设备上安装。
    使用 Ad-hoc 方式导出的安装包文件上传到蒲公英后,蒲公英会显示为“内测版”,同时会在应用管理中,显示出该安装包的证书中包含的 UDID 列表。开发者可以根据显示出的 UDID 列表,来排查某台设备的 UDID 有没有被添加到安装包的证书中。
    原因三:在导出 iOS App 的安装包文件(.ipa文件)时,选择了 In-house 方式,但是证书已过期。
    在导出 iOS 的安装包文件时,如果选择了 In-house 方式(一般用于苹果企业开发者账户),此时,如果出现无法安装的情况,开发者可以检查一下自己的企业开发者证书是否已过期。因为苹果对于企业开发者证书管理较为严格,所以开发者如果使用不当,可能会导致企业证书被封,被封后的企业证书导出的安装包,也是无法正确安装的。
    原因四:开发者在生成App安装包时,没有在 Xcode 中设置正确的 Architecture。
    iOS 应用的 Architecture(架构),决定了这款 iOS 应用可以在哪些设备机型上安装。例如,如果某个应用在 Xcode 中只添加了 arm64 这一种 Architecture,那么最终打包后的安装包文件上传到蒲公英后,对于 iPad mini、iPhone5 等以下设备,都是无法安装的(因为这些设备都不是 arm64 架构)。换句话说,如果需要在某个设备上可以安装,App 就必须支持那个设备的 Architecture。
    所以,正确的解决方法是,在生成 App 安装包时,尽可能让 App 支持更多的 Architecture。
    具体操作方法是:在 Xcode - Build Settings - Architecture 中,增加 armv7、armv7s、arm64,以便所有设备都可以安装。然后,将 "Build active architecture only" 设置为 NO。对于各个 iOS 设备支持的 Architecture 类型。请点击这里查看。
    原因五:App 支持的 iOS 系统版本,和当前设备系统版本不符。
    App 支持的 iOS 系统版本过低或者过高,都可能导致 App 无法安装成功。例如,如果某个 App 设置了只支持 iOS 7.0 以上的系统时,那么,如果在 iOS 6.1 系统上安装时,肯定是无法安装成功。
    因此,解决的方法也很简单,我们应该尽量让 App 尽可能支持更宽泛的系统版本。
    具体操作方式是:在 Xcode - General - Deployment Info - Deployment Target 中,给 App 设置一个尽量低的版本,例如 iOS 5.0。
    原因六:开发者上传的是一个破解的 ipa 安装包,或者是一个使用破解 Xcode 方式打包生成的 ipa 安装包,或者是通过 iTunes 生成的 ipa 安装包。
    通过任何非 Xcode(或 Xcode 的命令行工具)生成的安装包,都是没有办法正确在设备上安装的(越狱设备除外)。常见的不正确的打包 ipa 的方式有:通过 iTunes 导出安装包文件、通过 iTools 导出安装包文件等等。这种类型的 App 上传到蒲公英后,会显示 未签名 的标签提示。
    正确的方法是,使用一个正常的苹果开发者证书,通过未破解的 Xcode 打包生成 ipa 安装包。
    原因七:设备上已经安装了这个App,且已经安装的 App 和要安装的 App 是用不同证书打包的。
    这种情况下,也会造成 App 安装失败。解决的方式很简单,开发者只需将设备上原来已经安装的 App 删除,再重新安装新的 App 即可。
    原因八:Info.plist 文件中的LSRequiresIPhoneOS 没有设置,或者设置了 NO。
    对于 iOS 的 App 来说,如果Info.plist 文件中的LSRequiresIPhoneOS 没有设置,或者设置了 NO,那么由 Xcode 导出的安装包(.ipa 包),就不会包含 Payload 文件夹,而是被一个叫做 Applications 的文件夹代替。这样的安装包在安装时,会被 iOS 判定为无效的安装包,所以无法被正确安装。
    解决方式也很简单,只需要将Info.plist 文件中的LSRequiresIPhoneOS 设置为 YES,然后重新打包即可。具体操作为:在 Xcode 中打开 Info.plist 文件,然后检查 LSRequiresIPhoneOS 是否已设置,如果没有设置,就添加一个,然后将 LSRequiresIPhoneOS 的类型设置为 Boolean,值设置为 YES。
    设置好以后,可以看到 Info.plist 文件中显示 Application requires iPhone environment 的值为 YES。
    另外,还可以使用蒲公英的 Mac OS 客户端 来打包上传 App,蒲公英的 Mac OS 客户端在打包安装包时,自动处理了这个问题。
    原因九:网络出现中断或异常。
    遇到这种情况,用户可检查自己手机的所连接的网络是否稳定、速度是否正常等。可以尝试一下其他网站,或者更换一个 Wi-Fi,或者由 Wi-Fi 换成 3G/4G 等,然后重新安装。
    用这样的方式尝试后,一般都可以解决问题。


    欢迎加入Unity业内qq交流群:956187480

    qq扫描二维码加群

    展开全文
  • iphone app下载并自动安装

    千次阅读 2011-12-31 22:19:53
    参考苹果官方文档:install ...下载并安装应该有吧: 下载并安装 NSString *myURL = @"itms-services://?action=download-manifest&url=http://www.yourdomain.com/download/yourapp.plist";  NSURL *url = [NS
  •  //判断手机上是否安装app,如果安装直接打开,如果没安装,跳转到下载页面  function openApp(url) {  var timeout, t = 1000, hasApp = true;  var openScript = setTimeout(function () {  
  • 业务逻辑:在工作种遇到...所以,就要 检测有没安装,没有安装就下载安装。 1,检测 APP 是否安装。 /** * 检测 APP是否已安装。 * * @param context 当前上下文 * @param packageName 包名 * @return ...
  • 基于nginx实现二维码下载安装app

    千次阅读 2019-03-30 21:39:17
    nginx的安装请参考博客:...二维码生成带有网页链接地址,为了实现一张二维码实现android和ios通用下载,则需要利用所指向网站的html脚本实现转向不同app下载地址。 注意:1. android的apk文件没有特殊要求。...
  • 手机在线下载安装BlackBerry App World应用程序
  • h5在浏览器中无法判断出用户是否安装某个app,只是如果用户安装了这个...$(".goBuy").click(function(){//判断微信打开给出提示弹窗,浏览器打开的话,已安装app打开app,没有安装跳转到下载地址 checkOutApp(); ...
  • 微图App下载安装教程

    千次阅读 2017-10-09 16:27:37
    《微图App》是《水经...《微图App》可以通过关注“水经注地图下载器”公众号之后,在公众号中下载。 扫码关注微信公众号之后,点击“了解产品\微图App下载”菜单可以进入下载界面。 点击
  • flutter 更新app下载安装

    千次阅读 2019-01-04 13:51:48
    刚开始用的OtaUpdate插件,插件内部使用downloadmanager实现的...二、open_file打开文件自带安装(FlutterDownloader自带打开文件,但不能打开app不知道为啥) 代码: 1、下载监听  FlutterDownloader.registe...
  • 最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线,需要一种临时的方案解决应用分发下载问题,通常ios应用必须通过苹果应用商店才能下载安装,但是也可以看到一些...
  • Android app内部下载安装

    千次阅读 2020-07-07 17:17:56
    下载成功,开始安装,兼容8.0安装位置来源的权限 public static void installApkO(Activity context, String downloadApkPath) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //是否有安装位置来源...
  • 需求:有一个主APP,用来下载其他APP,比如下载完成后自行安装到主APP中(就像插件), 然后会产生一个图标,点击这个图标就会启动新安装APP,当安装这个APP后又返回到 主APP中。---------有点像Iphone的桌面。 ...
  • AppStore下载安装失败

    千次阅读 2018-03-01 14:03:16
    APP Store下载应用总会出现如图的情况,总需要重试几次才能下载成功,这是怎么回事?可以试试以下的几个方法,如果还是不能的话,可能就是app服务器正在维护。1:打开设置/Safari/点击—『清除历史记录』『清除...
  • //app状态 显示不同的文字 gameStatus:function(){ var _self = this; var packageName = 'com.youku.phone'; //_self.gameData.snsGameAndroidName var ...
  • 重新用企业证书打包--上传到服务器
  • iOS:苹果企业证书通过网页分发安装app  苹果的企业级证书发布的应用,是不用设备授权即可直接安装,并且不限设备上限。为了方便分发,苹果有协议实现通过网页链接直接下载安装企业级的应用。  基本的原理...
  • 所以咱们来模拟一下用户的操作步骤:1、用户第一次访问宣传页面 a、点击Banner,进入到APP Store中对应的APP下载页 b、APP下载页中提示:安装;用户点击安装 c、安装完成后,APP下载页中提示:
  • UNRAID - 安装APP商城及加速下载镜像

    万次阅读 2020-11-23 00:47:47
    在PLUGINS上选择以下几种地址,选择INSTALL,即可安装APPS商城 1.https://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg 这个可能会无法访问,...
  • 常常有这样的场景,咱们开发出来的APP需要进行推广,比如在页面顶部来一张大Banner图片,亦或一张二维码。但往往我们都是直接给推广图片加了一个下载链接(App Store... b、APP下载页中提示:安装;用户点击安装  c
  • 浏览器判断是否安装APP

    万次阅读 2016-08-01 16:47:43
    前段时间遇到一个小需求:要求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤起本地app,如果没有安装,则跳转到下载。 因为从来没有做过这个需求,因此这注定是一个苦逼...
  • 安卓实现静默下载、静默安装、自动安装系统app、自启动
  • 项目经常有APP分享出去的页面,点击下方的按钮时要求如果安装了APP,打开APP并跳转到相应页面,如果未安装就跳转到下载页面。 如图 html代码    下载APP           脚本代码  var btn_download = $...
  • 请问这个功能怎么做呢 大家是用的官方的DownloadManager 吗 为啥我这能下载就是不能提示安装 哪位大神有好的方法 确实挺急的 在线等!
  • ros-app下载以及使用注意事项 声明:这里的资源分享仅供学习使用,如有侵犯原创利益,望谅解。 使用ros的手机app连接机器人ros_master进行对机器人控制,摄像头视频显示,地图显示,设定初始点和导航目标点等功能,...
  • 苹果app签名TF签名如何下载安装

    千次阅读 2020-11-06 14:21:19
    很多人对苹果app签名都比较陌生,所以我们想要知道苹果app签名怎么使用,首先我们需要知道什么是苹果app签名,苹果app签名主要是为了实现一些上架AppStore的app在苹果手机上的下载安装,很多app开发完成后,由于...
  • 最近在做一个这样的功能,前端网页点击按钮时,如果用户手机有安装app,则直接打开app;否则就跳到应用市场下载。代码如下: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396,666
精华内容 158,666
关键字:

下载并安装app