ionic遇到的问题

一.生成签名(.keystore)文件
 
keytool -genkey -v -keystore demo.keystore -alias demo.keystore -keyalg RSA -validity 20000
keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来;
 
-keystore demo.keystore 证书的文件名;(hongtai.keystore)
 
-alias demo.keystore 表示证书的别名
 
-keyalg RSA 生成密钥文件所采用的算法;
 
-validity 20000 该数字证书的有效期;
 
输入后会让你回答关于你公司和地区的一些问题,这些回答一定要记住,以后更新apk的时候需要用到,最好截屏记录。
 
秘钥库口令:ht5117.com
 
您的名字与姓氏是什么:localhost(注意:这个为域名不是真正的姓名)
 
您的组织单位名称是什么:hongtai
 
您的组织名称是什么:hongtai
 
您所在的城市或区域名称是什么:fuzhou
 
该单位的双字母国家/地区代码是什么:cn
 
您所在的省/市/自治区名称是什么:fuzhou
 
二.签名apk
 
jarsigner  -verbose -keystore /yourpath/demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore  -digestalg SHA1 -sigalg MD5withRSA  -tsa http://timestamp.digicert.com
 
jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来;
 
-keystore /yourpath/demo.keystore 之前生成的证书
 
-signedjar demo_signed.apk 签名后的apk
 
demo.apk 需要签名的apk
 
demo.keystore 证书的别名
 
 
三.扫描二维码 一直提示scan of undefined 
解决方法:添加后需要删除平台platform 重新生成 才会在平台下生成新的插件包
 
四.发现ng-if ng-show ng-class  ng-hide 等目前测试了这几个都存在一个问题,
这些指令里调用的方法会多次执行,并且在进入视图和离开视图都会触发执行,为什么?
 
五.view 生命周期:
//$ionicView.loaded
//$ionicView.beforeEnter
//$ionicView.enter
//$ionicView.afterEnter
//$ionicView.beforeLeave
//$ionicView.leave
//$ionicView.afterLeave
//$ionicView.unloaded
 
六.cordova 项目 极光推送集成步骤
 
目前SDK只支持Android 2.3或以上版本的手机系统。富媒体信息流功能则需Android3.0或以上版本的系统。
 
1、下载极光推送的phonegap插件:cn.jpush.phonegap.JPushPlugin 到本地,或者直接连接到git库上的地址 添加到项目中
 
2、SDK集成步骤
 
解压缩 jpush-sdk_v1.x.y.zip 集成压缩包
复制 libs/jpush-sdk-release1.x.y.jar 到工程 libs/ 目录下
复制 libs/armeabi/libjpush1xy.so 到工程 libs/armeabi 目录下
复制 libs/armeabi-v7a/libjpush.so 到工程 libs/armeabi-v7a 目录下
如果您的项目有 libs/armeabi-v7a 这个目录,请把 libs/armeabi-v7a下的so文件 也复制一份到这个目录。
复制 res/drawable-hdpi 中的资源文件到工程的 res/drawable-hdpi/ 目录下
复制 res/layout 中的布局文件到工程的 res/layout/ 目录下
 
说明 1:若没有drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义纯色icon替换这个文件,文件名不要变。
 
说明 2:如果要在gradle中配置 shrinkResources true 用来清理多余资源,请在res/raw/ 中添加一个keep.xml来描述保留JPushSDK中的必要资源。示例请参考版本包中的 res/raw/keep.xml文件。(2.1.5版本以上)
 
3、在极光官网上注册一个自己的账号,并登录。在应用控制台创建一个项目,此项目的包名一定要和你自己的cordova项目程序包名一致,如果不一致,请修改config.xml中包名
 
4、修改phonegap插件:android下的JPushPlugin.java文件,将引入的R包名前的包名修改为自己的程序包名:例如:import cn.hongtai.schoolApp.R;
 
5、修改plugn.xml文件中的JPUSH_APPKEY的值,此值为在极光推送官网创建的demo项目的appkey的值
 
6、修改ios文件夹下的PushConfig.plist文件里的appkey值
 
7、注意:如果项目生成一直报错,请打开项目下的AndroidManifest.xml配置文件,修改里面的项目包名与appkey值,然后重新生成项目即可
 
8、sdk服务端集成,服务端在官网上有c#的demo,修改里面的秘钥为你自己在官网创建的demo的秘钥
 
9、解决集成后会提示缺乏统计代码问题办法
在JPushInterface文件中添加如下代码即可
import cn.jpush.android.api.JPushInterface;
 
@Override
    protected void onResume() 
    {
        super.onResume();
        JPushInterface.onResume(this);
     }
  
   @Override
   protected void onPause()
   {
       super.onPause();
       JPushInterface.onPause(this);
    }
 
10.集成jpush后,项目在某些模拟器上运行接收不了推送信息,可能是项目没有添加兼容支持的cpu镜像文件
 
 
七、发现 给对象属性赋值报错只读的问题解决方法
var deferred = $q.defer();
                var query = "select * from YongHu where yongHuId=?";
                $cordovaSQLite.execute($rootScope._db, query, [yongHuId]).then(function (res) {
                    if (res.rows.length > 0) {
                        var user = {};
                        var _user = res.rows.item(0);
                        deferred.resolve(user);
                    }
                }, function (err) {
                    deferred.reject();
                });
                return deferred.promise;
如果直接返回res.rows.item(0)  这个对象 的属性是只读的不能赋值,如果要给返回的对象进行赋值等操作,新创建一个对象返回
 
八、有出现跨域问题,解决办法
1.可用jsonp方法,具体网上找下资料有
2.客户端config.xml配置 
 
 
 
 
 
服务端处理代码添加下面这句代码
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
 
 
九、调用系统拨打电话和发送短信,可直接使用html5的a标签href:tel或者href:sms属性,但是需要配置下面两句话,使所有的地址都服从于白名单
 
 
十、各个插件git地址及说明
 
cordova-plugin-whitelist
 
cordova-plugin-device   : 设备
 
cordova-plugin-console  :控制台
 
cordova-plugin-statusbar : 状态栏
 
ionic-plugin-keyboard:https://github.com/driftyco/ionic-plugins-keyboard.git  键盘插件
 
cordova-plugin-x-toast :https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git  提示框插件
 
cordova-plugin-actionsheet :https://github.com/EddyVerbruggen/cordova-plugin-actionsheet.git  ActionSheet插件
 
cordova-plugin-camera :摄像头插件
 
cn.jpush.phonegap.JPushPlugin :极光推送插件
 
cordova-sqlite-storage :https://github.com/litehelpers/Cordova-sqlite-storage.git sqlite本地存储插件
 
cordova-plugin-network-information :网络状态插件
 
cordova-plugin-splashscreen :启动动画插件  可控制启动动画的时间,隐藏等 原来的默认启动动画是3秒
 
//以下三个插件可控制文件上传 下载  打开等操作
 
cordova-plugin-file-transfer: 文件传输插件
 
cordova-plugin-file :文件
 
cordova-plugin-file-opener2:https://github.com/pwlin/cordova-plugin-file-opener2.git 文件打开
 
cordova-plugin-app-version:https://github.com/whiteoctober/cordova-plugin-app-version.git   app版本信息插件 可用来判断当前app版本信息,自动更新用
 
phonegap-plugin-barcodescanner:https://github.com/phonegap/phonegap-plugin-barcodescanner.git  扫描枪,扫描条码
 
 
十一、配置文件参数说明
 
 
 
 
   浏览器缓存是否启用
 
 
 
    是否满屏
 
   启动动画图片文件名
 
   启动动画演示时间
 
 
 
 
 
   屏幕方向 横屏还是竖屏
  
十二、require.js的使用
1.定义严格模块结构,例如:bootstrap.js文件
define(['app'], function (app) {
    'use strict';
    //方案1:如果不好理解方案2的内容可以直接
    //angular.bootstrap(document, [app.name]);
 
    //方案2:
    angular.element(document).ready(function () {
        var startApp = function () {
            angular.bootstrap(document, [app.name]);
        }
 
        var onDeviceReady = function () {
            angular.element().ready(function () {
                startApp();
            });
        }
 
        if (typeof cordova === 'undefined') {
            startApp();
        } else {
            document.addEventListener("deviceready", onDeviceReady, false);
        }
    });
});
 
2.定义main.js文件
require.config({baseUrl: 'js',deps: ['bootstrap']});
 
3.引入require.js文件,在index.html 添加
 
4.模块化控制器:例如:
define(function (require) {
    'use strict';
    var services = require('service/services');
    var controllers = angular.module('app.controllers', []);
    controllers.controller("xiaoXiCtr", require('controller/tongxunlu/xiaoXiCtr'));
 
    return controllers;
});
5.模块化服务,例如:
define(function (require) {
    'use strict';
    var services = angular.module('app.services', []);
    services.factory("userService", require("service/common/userService"));
 
    return services;
});
 
十三、
    $ionicConfigProvider.scrolling.jsScrolling(false);  //全局禁用js滚动条
    $ionicConfigProvider.views.maxCache(5);//最大全局缓存为5个视图
 
十四、如果发现自动更新时候 下载apk错误,请配置mime下的类型 'apk': 'application/vnd.android.package-archive'
 
 
十五、ngCordova的使用  ngCordova是angular与cordova 集成的原生插件,是对原生的插件又进行了高层封装
1、下载ngCordova库,在index.html文件引入ng-cordova.js
app.js启动文件添加ngCordova 的依赖
posted @ 2016-07-01 16:14  灬東歌℡  阅读(294)  评论(0)    收藏  举报