React Native TV App Amazon功能验证失败,原因是FireTV stick #520中的睡眠模式下后台播放视频

ycl3bljg  于 2023-06-24  发布在  React
关注(0)|答案(1)|浏览(102)

我已经向亚马逊商店提交了我的react-native-tvos应用程序,但他们给予了下面的功能验证错误。

  1. FireTV-24-媒体:从睡眠(系统待机)模式返回应用程序会导致不一致的行为,从而导致负面的用户体验-遥控器和游戏手柄
    复制步骤:
    1.安装并启动应用程序
    1.播放任何视频
    1.长按Home按钮以调用HUD(平视显示器)覆盖
    1.选择睡眠将设备置于睡眠模式
    1.选择任意按钮退出睡眠模式并重新启动应用程序实际结果:观察到应用程序音频继续在后台播放预期结果:从睡眠模式返回不应导致应用程序的不一致行为
    我使用了下面版本的tvos和React原生视频。
"react-native": "npm:react-native-tvos@0.69.8-1",
"react-native-video": "^5.2.1"

下面是我为视频组件编写代码。

<Video
        ref={setPlayer}
        subtitle={true}
        source={{
          uri: configuration.url,
        }}
        title={title}
        subTitleText={subtitle}
        style={[styles.playerLoaded]}
        paused={pausedRef.current}
        onLoad={handleLoad}
        resizeMode={'contain'}
        rate={playerRate}
        onProgress={handleProgress}
        onError={onError}
        onLoadStart={onLoadStart}
        onSeek={handleSeek}
        onReadyForDisplay={onReadyForDisplay}
        onEnd={onEndVideo}
        playInBackground={false}
        playWhenInactive={false}
      />

here i attached screenshot of error given by amazon.
请帮我解决这个问题。先谢谢你。

oprakyz7

oprakyz71#

它可能是组件特定版本中的bug。无论如何,您可以使用AppState执行每次应用程序进入后台的操作
示例:

import React, { useRef, useState, useEffect } from "react";
    import { AppState, Text, View } from "react-native";
        
    const AppInactiveHandleExample = () => {
        const appState = useRef(AppState.currentState);
        const [appStateVisible, setAppStateVisible] = useState(appState.current);
    
        useEffect(() => {
            AppState.addEventListener("change", handleAppStateChange);
            // Return for clear the cache of action
            return () => {
                AppState.removeEventListener("change", handleAppStateChange);
            };
        }, []);
    
        const handleAppStateChange = nextAppState => {
        if (
            appState.current.match(/inactive|background/) &&
            nextAppState === "active"
        ) {
            // Resume the Video/Audio
            onAppInactive()
        }
            appState.current = nextAppState;
            setAppStateVisible(appState.current);
        };
    
        // Action executed when app was inactive or background
        const onAppInactive = () => {
            // Pause the Video/Audio
        }
    
        return (
        <View>
            <Text>Current state is: {appStateVisible}</Text>
        </View>
        );
    };
    
    export default AppInactiveHandleExample;

相关问题