react-native 应用程序更新警报代码无法更新应用程序

Posted

技术标签:

【中文标题】react-native 应用程序更新警报代码无法更新应用程序【英文标题】:react-native app update alert code fails to update app 【发布时间】:2021-11-27 23:32:47 【问题描述】:

我开发了一个 react-native 应用程序,目前正在运行(在 Apple 和 Google Play 商店中)。昨晚我使用 react-native-version-check、Alert、backHandler 和 Linking 实现了一个早该实现的功能,更新警报和更新程序。从这个 Medium 博客链接中,我将该功能改编到我的应用程序中并在 android 上进行了测试。我在商店发布之前测试了我的本地版本代码/版本名称,并且它通过不触发来工作 - 工作。但是,当我回滚我的版本低于商店的版本并重新构建时,它会正确触发一个警报框和“更新”按钮,当单击该按钮时应用程序关闭并且没有其他任何反应。所以我确实看到发生了正确的触发,但更新功能没有。重复多次(点击应用程序,点击更新按钮,应用程序关闭,我收到一条错误消息,显示“您的 Americana Radio 一直在停止”错误。“Your Americana Radio”是我的应用程序名称。

中篇文章/博客: https://medium.com/@kinley.tshering/force-update-react-native-apps-a9c1f22c0701

我的 app.android.js 中的代码专门针对这个函数如下:

import Alert, BackHandler, Linking from 'react-native';
import VersionCheck from 'react-native-version-check';

const checkVersion = async () => 
    try 
        let updateNeeded = await VersionCheck.needUpdate();
        if(updateNeeded && updateNeeded.isNeeded) 
            Alert.alert (
              'Please update',
              'You will have to update this app to the latest version to continue using it.',
              [
                
                   text: 'Update',
                   onPress: () => 
                                    BackHandler.exitApp();
                                    console.log("-I-: Doing the Update App functions");
                                    Linking.openURL(updateNeeded.storeURL);
                   ,
                  ,
               ],
               cancelable: false,
            );
       
     catch (error) ;
;
export default function App() 

// React Native Splash Screen
// Ref: https://dev.to/cmcodes/how-to-add-splash-screen-in-a-react-native-android-app-287l
//
// useEffect(() => 
//     SplashScreen.hide();
// , []); // Splash

const [hideSplash, setHideSplash] = useState(false);

useEffect(() => 
  setTimeout(() => 
    setHideSplash(true);
  , 2500); // amount of time the splash is shown from the time component is rendered
, []);

useEffect(() => 
  hideSplash && SplashScreen.hide();
, [hideSplash]);  // Splash with timer

useEffect(() => 
    checkVersion();
, []);

  return(
      <SocketContext.Provider value=socket>
          <AppContainer />
       </SocketContext.Provider >
  )

【问题讨论】:

【参考方案1】:

这是一个“驾驶舱错误”的案例。 我一意识到就解决了这个问题

我有updateNeeded.storeURL 而不是updateNeeded.storeUrl

更改后,代码按预期工作。

【讨论】:

以上是关于react-native 应用程序更新警报代码无法更新应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-native 克隆本机 android 警报屏幕

如何在react-native / redux中处理外部数据库更新?

无法对未安装的组件执行 React 状态更新。 useEffect React-Native

更新 react-native 后无法使用 react-native-debugger

无法更新状态 - react-native

React-Native:无法将 babel 更新到 ES7