ionic混合开发学习之路-第一坑

本文探讨了混合开发模式下APP更新的几种方法,包括直接超链接、使用iframe及自定义cordova插件等方案,并详细记录了每种方法的优缺点及实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做混合开发,有一部分人就喜欢这种模式的APP更新。页面全部放在服务器上,手机APP当作一个壳,用webview去加载远程页面。当需要更新APP功能的时候,只需要在服务器修改相对应的页面和功能即可。


当然,我们公司也是看中了这一点,但有个奇葩的想法:菜单页在APP上存放(为了提高APP初始化的加载速度),其他页面全部放在服务器上。


我当时想了想,可以啊,挺简单的,就去尝试了。以下为各种尝试的方法:


1、直接在APP上的菜单页面上放置超链接,指向服务器上的页面。

2、直接在APP上的菜单页面上增加一个modal页,在modal页上放置一个iframe去加载服务器上的页面。

3、APP上的菜单页使用android的activity实现,不使用cordova的webview去加载,当点击菜单后,再去使用webview去加载远程页面,自定义cordova插件用于关闭当前webview的acitvity


以上:

第一种办法看似很美好,可惜不行。在浏览器上测试可以直接跳转的,在android手机上就不行了。点了菜单什么反应都没有,看了看logcat,提示无法加载资源。白名单啥的都尝试了,无奈不行,所以直接pass掉。




第二种办法看似也很美好,可惜也不大能行。父页面调用iframe子页面方法时,可以调用,反过来就废了。不知道什么问题,各种尝试各种失败,百度+Google了各种解决JS跨域的问题,给出的答案一律都是JSONP...大哥,我不是ajax跨域好伐...所以这个方法pass掉。(有尝试过这种方法并且能成功调用父页面方法的大神,请留言告诉我,感激不尽)。


第三种办法看似不大美好,可惜是可以实现的。但是有一个问题,一般人选择去用混合开发的,大多是因为不了解android技术,想省去一部分的学习成本。所以使用android代码去写一个菜单页,稍不留神可能就是OOM。但是我还是会点android 的 ,所以无奈下选择了这种方法。


下面是实现第三种方式的关键代码:

MenuActivity(菜单页)中onCreate方法


if (Constant.login_user == null || Constant.login_user.equals("")) {
Bundle bundle = getIntent().getExtras();
Constant.login_user = bundle.getString("userName");
}
gridView = (GridView) findViewById(R.id.GridView);
menuList = getMenus(Constant.login_user);
SimpleAdapter menuItem = new SimpleAdapter(this, menuList, R.layout.item,
new String[] { "itemImage", "itemText" }, new int[] { R.id.ItemImage, R.id.ItemText });
gridView.setAdapter(menuItem);
// 为菜单的item绑定点击事件
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent intent = new Intent(MenuActivity.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("url", menuList.get(position).get("itemUrl").toString());
intent.putExtras(bundle);
startActivity(intent);

}
});


MainActivity(cordova的webview页)中的onCreate方法

Bundle bundle = this.getIntent().getExtras();
String url = bundle.getString("url");
loadUrl(url);



1 简介 1、Native APP(原生) 2、Hybrid APP(混合) 3、React Native Hybrid App按网页语言与程序语言的混合,通常分为三种类型:多View混合型,单View混合型,Web主体型。 2 技术 2.1 技术选型 Ionic 2.1.1 Ionic介绍 Ionic是一款基于Angular、Cordova的强大的HTML5移动应用开发框架,可以快速创建一个跨平台的移动医用。可以快速开发移动APP、移动WEB页面、微信公众平台应用,混合APP WEB页面。 2.1.2 Ionic和cordova、Angular关系 Ionic = cordova + Angular + ionic Css Ionic 是完全基于谷歌的 Angular 框架,在 Angular 基础上面做了一些封装,让我们可以更快速和容易的开发移动的项目。Ionic 调用原生的功能是基于 Cordova,Cordova 提供了使用JavaScript 调用 Native 功能,ionic 自己也封装了一套漂亮的 CSS UI 库。 2.1.3 开发工具 Visual Studio Code 2.1.4 管理工具 Git 2.2 环境搭建 2.2.1 概述 2.2.2 JDK 2.2.2.1 版本 jdk1.8 2.2.2.2 配置 JAVA_HOME PATH CLASSPATH 2.2.3 Apache ant 2.2.3.1 版本 1.9.12 2.2.3.2 解压 2.2.3.3 配置 ANT_HOME: D:\android\apache-ant-1.10.4 Path: %ANT_HOME%\bin 2.2.3.4 查看安装版本 ant –v 2.2.4 android SDK 2.2.4.1 版本 r24.4.1 2.2.4.2 配置 ANDROID_SDK_HOME: D:\Android\android-sdk-windows Path:%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools 2.2.4.3 SDK 通过SDK Manager下载相关的版本 2.2.4.4 查看信息 android -h 2.2.5 node.js 2.2.5.1 版本 8.11.3 2.2.5.2 安装 2.2.5.3 查看版本 node –v npm -v 2.2.6 npm/cnpm 2.2.6.1 安装npm nodejs已经集成了npm 2.2.6.2 安装 cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 2.2.7 cordova 2.2.7.1 版本 8.0.0 2.2.7.2 安装 npm install -g cordova 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.7.3 查看版本 cordova -v 2.2.8 ionic 2.2.8.1 版本 3.20.0 2.2.8.2 安装 npm install –g ionic 可以使用cnpm代替npm cnpm install -g cordova ionic 2.2.8.3 查看版本 ionic –v 2.2.8.4 查看信息 ionic info 3 项目 3.1 创建 3.1.1 新建 3.1.2 启动 3.1.3 打包 3.1.3.1 添加 3.1.3.2 生产release版apk(签名后安装) 3.1.3.3 生成debug版apk 3.1.4 签名 3.1.4.1 生成签名文件 keytool -genkey -v -keystore testapp.keystore -alias testapp.keystore -keyalg RSA -validity 20000 3.1.4.2 apk签名 jarsigner -verbose -keystore testapp.keystore -signedjar app-release-signed.apk app-release-unsigned.apk testapp.keystore 3.1.5 安装 安卓手机安装使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值