Я разрабатываю приложение для видеоконференций, поэтому мне нужно создать независимые комнаты для пользователей для конференции. поэтому я использую opentok (tokbox) sdk для Android. ниже мои файлы компиляции gradle для opentok:
compile 'com.opentok.android:opentok-android-sdk:2.12.0'
compile 'com.tokbox:opentok-server-sdk:2.3.2'
Теперь я создаю идентификатор сеанса и идентификатор токена с помощью opentok server sdk (java). это код для генерации идентификатора сеанса и идентификатора токена.
//java code
OpenTok openTok = new OpenTok(Integer.parseInt(OpenTokConfig.API_KEY), OpenTokConfig.SECRET_KEY);
try {
SessionProperties sessionProperties = new SessionProperties.Builder().mediaMode(MediaMode.ROUTED).build();
Session session = openTok.createSession(sessionProperties);
sessionId = session.getSessionId();
//successfully we got the session id here
tokenId = openTok.generateToken(sessionId); //app crashed here
} catch (OpenTokException e) {
e.printStackTrace();
}
После отладки этого кода мы успешно получили идентификатор сеанса, но у меня возникла проблема с генерацией токенида. В этот момент приложение внезапно вылетает, оно возвращает
`Caused by: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.decodeBase64
at com.opentok.util.Crypto.decodeSessionId(Crypto.java:47)
at com.opentok.OpenTok.generateToken(OpenTok.java:131)
at com.opentok.OpenTok.generateToken(OpenTok.java:181)`
Я углубился в отладку в opentok sdk, приложение вылетело в этом методе
//class name is : Crypto
public static List<String> decodeSessionId(String sessionId) throws UnsupportedEncodingException {
sessionId = sessionId.substring(2);
sessionId = sessionId.replaceAll("-", "+").replaceAll("_", "/");
byte[] buffer = Base64.decodeBase64(sessionId); //app crashed in this line
sessionId = new String(buffer, "UTF-8");
return new ArrayList<String>(Arrays.asList(sessionId.split("~")));
}
Я знаю, что проблема связана с проблемой декодирования. Я искал эту проблему во многих местах, но я не получил никаких связанных ответов по этой проблеме. Команда Opentok просто говорит, что обновите ваш SDK. Пожалуйста, дайте верное направление.