-
1.
安装插件
cordova-plugin-
code-push
Ionic2:
ionic
plugin add --save cordova-plugin-code-push
Ionic3:
ionic cordova plugin
add cordova-plugin-code-push@latest
2.
安装
code-
push
的
ionic api
npm install --save @ionic-native/code-
push
安装
code-push
npm install -g code-push-cli
注册
code-
push(
如果有账号则跳过
)
code-push register
会
< br>弹
出
浏
览
器
窗
口
,
注
册
一
个
账
p>
号
,
我
选
择
的
是
Microso
ft(Personal)
登陆
code-push
code-push login
会弹出浏览器窗口,然后出
现一个验证码,复制验证码填进命令
行里
建立以个新的
code-
push
项目
code-push
app add
项目名
(
这个项目名
和
ionic
的无关
)
在这里推荐每个平台建立不同的项目,类似
:
code-push app add ionic2-myApp-android
code-push app add ionic2-myApp-ios
建立项目后会显示项目的
key
,把
key
记下来,
code-push
主要
是通过
key
连接服务
器和
app
而不是项目名。
注:这里会生成两个
key
staging key
:
for
development and testing
production
key
:
for real world use
如果你忘记
key
了,可以输入以下命令查看
p>
code-push deployment ls
项目名
-k
在
里添加如下内容
name=
value=
你的安
卓平台的
key
你的
ios
平台的
key
你可以
cd
到你的项目目录,然后用如下命令来发布一个新更新
发布到
Staging
更新
code-push release-cordova
项目名
ios/android
发布到
Production
的更新
code-push
release-cordova
项目名
ios/android -d Production
你可以用以下命令查看你的更新
code-push deployment ls
项目名
命令行:
code-push
deployment add
部署
code-push deployment rename
重命名
code-push
deployment rm
删除部署
code-push deployment ls
列出应用的部署情况
code-
push deployment ls
查看部署的
key
code-
push deployment history
查看历史版
本
(Production
或者
Staging)
code-push deployment clear
清除
Staging<
/p>
更新的历史版本
如果你的
里
有
列 :
<
br>boolean <
br>show ( <
br>有新的可更新版本 <
br>updateDialog ,可能产生流量费用
,那么可以跳过这
一步
否则添加下面三行
确认
cordova-plugin-
whitelist
插件
输
入
cordova
plugin
ls
命
令
,
查
看
表
中
是
否
有
cordova-plugin-whitelist
如果没有则输入
cordova
plugin add cordova-plugin-whitelist
p>
使用
:
创建一个
p
rovider
文件,这里是名为
codePushServi
ce
的
provider
文件
import
{
Injectable
}
from
'@angular/core'
;
import
{
Platform
,
ToastController
,
LoadingController
,
Loading
}
from
'ionic-angular'
;
import
{
CodePush
,
SyncStatus
}
from
'@ionic-native/code-
push'
;
//
自动更新支持
import
{
Network
}
from
'@ionic-
native/network'
;
/*
Generated class for the
CodePushServiceProvider
provider.
See
/docs/ts/latest/guide/dependency-
injecti
for more info on providers and Angular
2 DI.
*/
@
Injectable
()
export class
CodePushService
{
private
availabl
e
=
false
;
constructor
(
private
platform
:
Platform
,
private
codePush
:
CodePush
,
private
network
:<
/p>
Network
,
private
toastCtrl
:
ToastController
,
private
loadingCtrl
LoadingController
,
)
{
this
.
available
=
this
.
platform
.
is
(
'cordova'
)
;
p>
console.
log
(
this
.
platform
.
platforms
())
;
p>
if
(
this
.
available
)
{
this
.
codePush
.
notifyA
pplicationReady
()
;
}
}
autoCheckAndUpd
ate
(
show
:
=
false
)
{
if<
/p>
(
this
.
a
vailable
)
{
thi
s
.
update
(
)
;
}
}
lo
ading
:
Loading
;
update
show
:
boolean
p>
=
false
)
{
let
wifi
=
this
.
network
.
type
==
||
this
.
network
.
type
==
||
this
.
network
.
type
==
void
0
let
syncOpt
= {
updateDialog
:{
des
criptionPrefix
:
'
详
情
:'
,
mandatoryContin
ueButtonLabel
:
'
继续
'
,
mandatoryUpdate
Message
:
'
有新的版本需要<
/p>
更新
'
,
opt
ionalIgnoreButtonLabel
:
'
忽略
'
,
opt
ionalInstallButtonLabel
:
'
更新
'
,
opt
ionalUpdateMessage
:
'
,
是否立即更新
?'
,
updateTitle
:
'
检查到新版本
'<
/p>
,
}
};
if
(
!<
/p>
wifi
)
{
syncOpt
.
.
optionalUpda
teMessage
+=
n
(
当前网络不是
WiFi
)
;