我是靠谱客的博主 长情便当,这篇文章主要介绍ionic开发App-问题收集总结总结ionic tab在Android中显示在顶部的解决方案ionic 隐藏底部菜单栏ionic如何后退ionic在装载ion-view的时候如何隐藏ion-nav-headerionic App打包成apk,在手机打开的时候,会出现下面的错误:$ionicHistory.clearHistory无效禁止ion-view页面的缓存如何更改ion-header-bar颜色ionic隐藏后退按钮上的文字如何给ion-header-bar添加自定义点击事件如何退出Ap,现在分享给大家,希望可以做个参考。

总结

使用ionic开发App算是告一段落了。使用前端的技术来统一移动端,不得不承认这个听起来很酷。JavaScript要统一世界的节奏。
然而现实并不是这样,使用ionic开发App虽然在开发速度上比原生开发快很多(有AngularJS的基础上,1~2个礼拜熟悉ionic框架,一个月左右做完App),但依然存在下面这个几个比较致命的问题:
1. App流畅度不足,用户体验差。尤其是在Android4.4以下的手机,性能更是惨不忍睹。iOS上流畅度则相对会好很多。所以尽量控制每个页面的复杂度。
2. 长列表性能不佳。这点在此次开发的App倒不是很明显,因为公司的业务并不涉及大量的数据展示。
3. 可定制化不高。所有的行为都只能基于ionic框架的基础去实现,可玩性不高,难以实现个性化定制。
4. 插件问题。在ionic中,跟原生设备打交道都只能通过cordova插件这一种方式。常用的几个基本插件都有了成熟的解决方法及用法,但是如果遇到比较冷门的需求,在没有找到插件的情况下,只能自己写插件或者考虑其他解决办法了。这次开发过程中就遇到了这个坑,App需要对接连连支付,后面还是在github上找到了一个连连支付插件,最后通过更改插件源代码才能用到App上,实现了对接连连支付。

虽然存在着致命缺点,但是依然不能忽略ionic的优点。每种技术存在都有其价值与市场。ionic最大的优点便是可以在低成本的情况下,快速地开发出一款并不是最完美但是依然可以使用的App。
下面便是在开发过程中所遇到的部分问题

ionic tab在Android中显示在顶部的解决方案

解决办法:
在 iOS中, tabs 一直处于底部. 在android中 ionic tabs 一直在顶部,如果要改我们可以通过配置$ionicConfigProvider。代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
.config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) { $ionicConfigProvider.platform.ios.tabs.style('standard'); $ionicConfigProvider.platform.ios.tabs.position('bottom'); $ionicConfigProvider.platform.android.tabs.style('standard'); $ionicConfigProvider.platform.android.tabs.position('standard'); $ionicConfigProvider.platform.ios.navBar.alignTitle('center'); $ionicConfigProvider.platform.android.navBar.alignTitle('left'); $ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left'); $ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back'); $ionicConfigProvider.platform.ios.views.transition('ios'); $ionicConfigProvider.platform.android.views.transition('android');

参考资料

http://bbs.phonegap100.com/thread-1495-1-1.html


ionic 隐藏底部菜单栏

可以参考我之前写的文章:ionic 隐藏底部菜单栏

ionic如何后退

ionic提供了$ionicHistory来访问访问历史以及返回。其中$ionicHistory.goBack([backcount])就是用来回退视图。
其中backcount指定了回退多少个视图,默认为-1,即回退一个视图。
参考资料:

http://ionichina.com/topic/569a5f8458c6c76d17fde189

ionic在装载ion-view的时候如何隐藏ion-nav-header

这种问题属于API掌握不够熟练。
只需为ion-view添加属性:hide-nav-bar=“true”即可实现隐藏父ion-nav-bar

ionic App打包成apk,在手机打开的时候,会出现下面的错误:

复制代码
1
2
the connection to the server was unsuccessful. (file ///android_asset/www/index.html)

这一般是由于www/index.html下的index.html文件找不到。可能是编译没成功导致的。

$ionicHistory.clearHistory无效

有时候会出现 ionicHistory.clearHistory timeout()

复制代码
1
2
3
4
5
$timeout(function () { $ionicHistory.removeBackView(); $ionicHistory.clearCache(); $ionicHistory.clearHistory(); });

禁止ion-view页面的缓存

cache-view = false即可

如何更改ion-header-bar颜色

参考文章:

http://stackoverflow.com/questions/30015413/

change-ion-view-header-color-in-ionic

  1. You could add the ion-nav-bar to each view.
复制代码
1
2
3
4
5
6
7
<ion-view view-title="Page 1"> <ion-nav-bar class="bar-balanced"> <ion-nav-back-button></ion-nav-back-button> </ion-nav-bar> <ion-content> </ion-content> </ion-view>
  1. You could also update the background-color (and any other properties) by using ng-style
    Main navbar:
复制代码
1
2
3
<ion-nav-bar class="bar-positive" ng-style="{'background-color': viewColor}"> <ion-nav-back-button></ion-nav-back-button> </ion-nav-bar>

CSS:

复制代码
1
2
3
.nav-bar-block, .bar { background-color: inherit !important; }

Controller:

复制代码
1
2
3
$scope.$on('$ionicView.beforeEnter', function() { $rootScope.viewColor = 'green'; });

ionic隐藏后退按钮上的文字

可以采用CSS和js配置两种方式
CSS方式

复制代码
1
2
3
4
/*隐藏后退按钮文字*/ .bar .buttons .back-text { display: none !important; }

js方式:在config()中添加

复制代码
1
2
$ionicConfigProvider.backButton.previousTitleText(false);

如何给ion-header-bar添加自定义点击事件

首先设置ion-view的hide-nav-bar=true,然后自定义ion-header-bar

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<ion-view class="container" title="" hide-nav-bar="true"> <<ion-header-bar > <button class="button back-button buttons button-assertive button-clear header-item" ng-click="goBack()"> <i class="icon ion-ios-arrow-thin-left"></i> </button> <h1 class="title fund-title" ng-click="toggleQueryModal()">账户-资金记录** </h1> </ion-header-bar> </ion-view>

如何退出App

ionic.Platform.exitApp()

在使用$ionicPlatform.ready()方法时,在真机中偶尔会出现没有监听到的情况,导致一些cordova事件无法被执行比如registerBackButtonAction

参考资料:

https://github.com/driftyco/ionic/issues/1751

解决办法将cordova.js移到页面最底部。

复制代码
1
move cordova.js to end of body tag

ionicPlatform.ready()webViewcordovawindow.onloadcordova.js ionicPlatform.ready()。

ionic如何更改包名

找到根目录下的config.xml,其中<widget id='com.package.name'>便是你的包名。更改之后,再用命令cordova build android重新构建App即可。

ionic中如何打开微信(或者其他应用)

使用协议weixin://

复制代码
1
<a class="button button-block button-light" href="weixin://">打开微信</a>

然后在根目录下的config.xml中配置:

复制代码
1
2
<access origin="weixin:*" launch-external="yes"/> //打开微信的

ionic.Platform.exitApp()退出后,再进入应用 splashscreen不显示

在config.xml文件里添加

复制代码
1
<preference name="SplashShowOnlyFirstTime" value="false" />

ionic 签名后的问题

问题描述:

复制代码
1
2
ionic can't access http after generate signed release apk

可能的解决办法:

复制代码
1
2
1add whitelist in confix.xml cordova plugin add cordova-plugin-whitelist --save

ionic 键盘挡住input框

参考资料:

https://forum.ionicframework.com/t/scroll-to-the-focused-item-input-when-the-keyboard-is-up/422

cordova设置签名的apk不验证服务器端的ssl证书

参考资料

http://ivancevich.me/articles/ignoring-invalid-ssl-certificates-on-cordova-android-ios/

在测试APK的时候,如果后端API为https的,而且在测试服的https证书是非正式的话,会导致测试版apk无法发起http请求。解决办法便是更改ssl验证。
Android端需要更改文件
CordovaWebViewClient.java
代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { final String packageName = this.cordova.getActivity().getPackageName(); final PackageManager pm = this.cordova.getActivity().getPackageManager(); ApplicationInfo appInfo; try { appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA); if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { // debug = true handler.proceed(); return; } else { // debug = false // THIS IS WHAT YOU NEED TO CHANGE: // 1. COMMENT THIS LINE // super.onReceivedSslError(view, handler, error); // 2. ADD THESE TWO LINES // ----> handler.proceed(); return; // <---- } } catch (NameNotFoundException e) { // When it doubt, lock it out! super.onReceivedSslError(view, handler, error); } }

该文件的位置:
Cordova v4 及其以下: project/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java
Cordova v5 及其以上: project/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java

ionic 动态设置title,或者自定义title

ionic中设置title可以直接使用,ion-view。

复制代码
1
2
<ion-view view-title="title"> </ion-view>

但是这种方式只适合静态的title。但是如果要动态设置title的话,特别是当要设置的title是由http请求的数据时,上面的方式就无法显示title。可以用ion-nav-title替换:

复制代码
1
2
3
4
5
6
<ion-view > <ion-nav-title> {{yourTitlte}} </ion-nav-title> </ion-view>

在Controller中的代码

复制代码
1
2
3
4
$timeout(function(){ $scope.yourTitle = data; })

关于ion-view中的view-title属性,官方定义如下:

A text-only title to display on the parent ionNavBar. For an HTML title, such as an image, see ionNavTitle instead.

也就是说view-title只能用来设置text-only title,对于其他类型的title如图片等,要用ionNavTitle替换。同理,如果title是个变量,也应该使用ionNavTitle
参考资料:

https://www.raymondcamden.com/2015/12/18/is-your-ionic-view-title-not-updating/

ionic 点击系统返回提示退出确认框

可以参考我写的文章:【ionic App问题总结系列】点击系统返回键退出App

ionic登录拦截机制的实现

可以参考这篇文章:ionic登录拦截机制-使用Modal作为登录框

ionic插件相关

怎么在ionic中打开网页

使用inappbrowser插件便可实现。
http://stackoverflow.com/questions/34342172/post-a-form-in-a-new-window-inappbrowser-in-ionic-cordova/34357114

怎么在ionic中使用cordova plugin

监听事件deviceready,然后在该事件监听中调用你所需要的插件。

复制代码
1
2
3
4
5
6
7
8
9
10
document.addEventListener("deviceready", function () { if (window.LLPay) { if (!Passport.authStatus()) { AuthService.updateUserInfoAfterAuth($scope.recharge.full_name, $scope.recharge.id_no); } window.LLPay.startPay($scope.arguments, function (data) { }, function (err) { }); } })

如果你不知道插件的名字是什么,可以去插件所在的位置的plugin.xml:plugins/your-plugin/plugin.xml中找到如下的代码,其中clobbers中target属性便是你在js中调用该插件的方法名字。

复制代码
1
2
3
4
<js-module src="www/inappbrowser.js" name="inappbrowser"> <clobbers target="cordova.InAppBrowser.open" /> <clobbers target="window.open" /> </js-module>

ionic微信分享

可以参考我写的文章:【ionic App问题总结系列】ionic微信朋友圈分享

ionic App更新

可以参考我写的文章: 【ionic App问题总结系列】ionic 如何更新App版本

文章首发于我的个人博客: www.iamsuperman.cn

最后

以上就是长情便当最近收集整理的关于ionic开发App-问题收集总结总结ionic tab在Android中显示在顶部的解决方案ionic 隐藏底部菜单栏ionic如何后退ionic在装载ion-view的时候如何隐藏ion-nav-headerionic App打包成apk,在手机打开的时候,会出现下面的错误:$ionicHistory.clearHistory无效禁止ion-view页面的缓存如何更改ion-header-bar颜色ionic隐藏后退按钮上的文字如何给ion-header-bar添加自定义点击事件如何退出Ap的全部内容,更多相关ionic开发App-问题收集总结总结ionic内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部