2、React Native-Pushy发布

2018-11-12  本文已影响0人  学习abc

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)!

全部完成

上一篇 下一篇

猜你喜欢

热点阅读