1、注册
在项目在根目录输入
pushy login
email: <输入你的注册邮箱>
password: <输入你的密码>
2、创建APP(这里只有iOS的部分其他的可以去官网查看链接)
pushy createApp --platform ios
App Name: <输入应用名字>
3、添加代码热更新功能
获取appKey
import {
Platform,
} from 'react-native';import _updateConfig from './update.json';
const {appKey} = _updateConfig[Platform.OS];
4、主要代码
import {
Linking,
} from 'react-native';
import {
isFirstTime,
isRolledBack,
packageVersion,
currentVersion,
checkUpdate,
downloadUpdate,
switchVersion,
switchVersionLater,
markSuccess,
} from 'react-native-update';
下载部分:
doUpdate = info => {
downloadUpdate(info).then(hash => {
Alert.alert('提示', '下载完毕,是否重启应用?', [
{text: '是', onPress: ()=>{switchVersion(hash);}},
{text: '否',},
{text: '下次启动时', onPress: ()=>{switchVersionLater(hash);}},
]);
}).catch(err => {
Alert.alert('提示', '更新失败.');
});
};
检查更新部分:
checkUpdate = () => {
checkUpdate(appKey).then(info => {
if (info.expired) {
Alert.alert('提示', '您的应用版本已更新,请前往应用商店下载新的版本', [
{text: '确定', onPress: ()=>{info.downloadUrl && Linking.openURL(info.downloadUrl)}},
]);
} else if (info.upToDate) {
Alert.alert('提示', '您的应用版本已是最新.');
} else {
Alert.alert('提示', '检查到新的版本'+info.name+',是否下载?\n'+ info.description, [
{text: '是', onPress: ()=>{this.doUpdate(info)}},
{text: '否',},
]);
}
}).catch(err => {
Alert.alert('提示', '更新失败.');
});
};
设置markSuccess 如果不设置会代码回滚:
if (isFirstTime) {
Alert.alert('提示', '这是当前版本第一次启动,是否要模拟启动失败?失败将回滚到上一版本', [
{text: '是', onPress: ()=>{throw new Error('模拟启动失败,请重启应用')}},
{text: '否', onPress: ()=>{markSuccess()}},
]);
} else if (isRolledBack) {
Alert.alert('提示', '刚刚更新失败了,版本被回滚.');
}
}
5、打包
打包之前先在工程中打离线包
根目录有release_ios文件夹,没有的话创建一个
打包程序导出ipa文件
注意:update.json 需要跟你的js文件在一个目录下 否则会找不到文件 也有可能我引入的路径问题
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output release_ios/main.jsbundle --assets-dest release_ios/
6、发布应用
pushy uploadIpa <your-package.ipa>
之后根据终端提示操作:
$ pushy bundle --platform <ios|android>
Bundling with React Native version: 0.22.2
<各种进度输出>
Bundled saved to: build/output/android.1459850548545.ppk
Would you like to publish it?(Y/N)
输入Y
Uploading [========================================================] 100% 0.0s
Enter version name: <输入版本名字,如1.0.0-rc>
Enter description: <输入版本描述>
Enter meta info: {"ok":1}
Ok.
Would you like to bind packages to this version?(Y/N)
输入Y
9168) 2.3.0(normal) (newest)
Total 1 packages.
Enter packageId: 9168
Ok.
注意:packageId是 bind是返回的四位数字(9168)!
全部完成
网友评论