我正在开发一个聊天应用程序,我有两个屏幕:
现在的问题是体植入登录功能。由于我已经有了一个后端,它具有使用jsonwebtoken的身份验证功能,所以我也不想使用voximplant sdk登录,但是经过几次尝试之后,我不得不这样做,因为只有这样才能工作。因此,当我使用nodejs登录/注册时,我也使用voximplant SDK登录。到现在为止一切都很酷,一切正常。但是现在如果我杀死这个应用程序并重新启动它,就像voximplant登录功能在login/register组件中一样,(现在它不在那里了,因为我现在已经通过身份验证并在HomeScreen中使用AsynStorage来存储jsonwebtoken),所以voximplant SDK就被注销了。现在,在体植入sdk中没有任何方法(据我研究它们的文档),我可以检查那个if it is is logged out, log me in again。
当我点击视频呼叫图标(,虽然我不能检查我是否注销了)时,我可以登录,但是这个操作太昂贵了。
我能做些什么让它起作用吗?比如,当我已经鉴定的时候,保持体素植入物的状态。下面是一些来自我的项目的相关代码片段。
登录/注册屏幕:
import {Voximplant} from 'react-native-voximplant';
const LoginScreen = () => {
const voximplant = Voximplant.getInstance();
useEffect(() => {
const connect = async () => {
const status = await voximplant.getClientState();
if (status === Voximplant.ClientState.DISCONNECTED) {
await voximplant.connect();
}
};
connect();
}, []);
const login = async (name) => {
// voximplant login
const fqUsername = `${name.toString()}@${APP_NAME}.${ACC_NAME}.voximplant.com`;
const password = '....';
await voximplant.login(fqUsername, password);
// api login
const result = await fetch(`${API_URL}/auth/login/`, {...})
}
return (
<TouchableOpacity
onPress={() => {
login(name);
}}>
<Text>Login</Text>
</TouchableOpacity>
)
}然后,登录后,一切正常工作,但现在,当我关闭应用程序,并关闭它,并再次启动它,该功能不工作,并将"NOT_LOGGED_IN"扔到控制台。
我试图在voximplant.connect中使用HomeScreen,但是它已经被连接了,所以问题是,它不能持久地保持状态。
HomeScreen.js:
const HomeScreen = () => {
const voximplant = Voximplant.getInstance();
useEffect(() => {
const connect = async () => {
const status = await voximplant.getClientState();
if (status === Voximplant.ClientState.DISCONNECTED) {
await voximplant.connect();
}
};
connect();
}, []);
return (
...
)
}当我调用时,控制台输出:
LOG Promise unhandled rejection id:0
"NOT_LOGGED_IN" // I couldn't find any event to check "NOT_LOGGED_IN" state.所以问题是:如何保持联系&最重要的是登录。任何帮助都是非常感谢的!
博士:sdk
发布于 2022-06-08 18:09:16
Voximplant需要建立与Voximplant的连接,并需要用户授权进行调用。它不保持应用程序启动之间的登录状态,也不保留到Voximplant的连接状态。
此外,当应用程序处于活动状态时(例如,移动设备上的网络交换机或糟糕的internet连接),可能会出现到Voximplant的连接丢失的情况。在这些情况下,应用程序应该重新连接并重新登录用户以进行调用。
为了处理这些情况,Voximplant Native提供了API:
对于应用程序被杀死并再次启动的情况,我推荐以下解决方案之一:
此外,可以将所有连接/逻辑实现移动到一个单独的功能组件上,以避免其在不同的UI组件(如登录和主屏幕(示例) )上的重复。
发布于 2022-06-05 03:02:40
这也花了我时间,但就像你给自己打电话,或者那个用户不会因为在线而丢失。试着重新设置这个应用程序,它曾经失败,不协调,连接,丢失。
https://stackoverflow.com/questions/70775872
复制相似问题