Vitaliy
Ну в общем там строка должна быть. а вот почему в ошибке Double просит - я пока не понял а вообще похоже что там наоборот double как-то распарсился, а ожидается string где-то внутри
ana 🪢
@ponomarevv а где ты смотришь код модуля?)
Vitaliy
luifer
какой из них является семейством шрифтов по умолчанию на реагировать-родной?
Vitaliy
Alex
Работаю с винды, как открыть проект в ios который запущен в Macos на виртуалке?
Alex
Проекты через експо работают, а как быть если проект не на нём?
Gena
Ну в общем там строка должна быть. а вот почему в ошибке Double просит - я пока не понял а вообще похоже что там наоборот double как-то распарсился, а ожидается string где-то внутри
Это ошибка не оттуда... т.к. она происходит в ReadableNativeArray... это где-то в другом месте кода. Там, где действительно в натив передается число (возможно что-то приведенное к числу), а ожидается строка
luifer
It depends on platform and OS version.
Any link please? I cannot find it
ana 🪢
у вас есть другое альтернативное решение?
извините, но нет) я не сталкивалась с подобными кейсами
Vitaliy
может Uri.encode
ага, учитывая что на *#06# оно может по-разному отработать, и я пока не знаю как именно это будет в java выглядеть.
ana 🪢
ага, учитывая что на *#06# оно может по-разному отработать, и я пока не знаю как именно это будет в java выглядеть.
я вообще не понимаю, а что это за пакет, я вроде не помню в java.net.Uri такого метода
ana 🪢
но я могла и забыть)
Vitaliy
у вас есть другое альтернативное решение?
а другой запрос пройдёт или такая же ошибка будет? Баланс сим-карты, например, и т.п.
Gena
да это та же ошибка
Хех... вы исходники вообще посмотрели? Правильно намекали, что небезопасно использовать модуль, исходники которого не опубликованы ))) Ну так я покажу: import { NativeModules, Alert } from 'react-native'; // const { RNUssdDial } = NativeModules; var RNUssdDial = { getDeviceName: () => { NativeModules.Device.getDeviceName((err, name) => { console.log(err, name); }); }, dialNumber: (number) => { NativeModules.Device.dialNumber((number) => { Alert.alert(number) }); } } export default RNUssdDial;
Gena
Итак, модуль Device, ф-ция dialNumber, которой передается что? Правильно, ф-ция!
Gena
Теперь смотрим натив: @ReactMethod public void dialNumber(String number) { number = Uri.encode(number); String url = "tel:" + number; Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.reactContext.startActivity(intent); }
Gena
Это файл DialerModule (не знаю каким чудом он у вас слинковался потому что там два пакета в одной папке, но похоже слинковался) И имя у него для RN действительно Device
Gena
Ф-ция dialNumber, что принимает? Правильно - строку )))
Gena
А что ей передается? Правильно - ф-ция
Gena
Ф-ции через бридж у RN ходят в виде дескрипторов - т.е. числовых идентификаторов )
Gena
В общем, лучше свой маленький нативный модуль напишите с тем же java кодом. Или... это же intent? Так может что-то типа https://github.com/lucasferreira/react-native-send-intent#example--usage-of-phone-calls заюзать? )
Александр
В общем, лучше свой маленький нативный модуль напишите с тем же java кодом. Или... это же intent? Так может что-то типа https://github.com/lucasferreira/react-native-send-intent#example--usage-of-phone-calls заюзать? )
Либо форкнуть библиотеку, вставить туда код из файлов этой библиотеки, скачавшихся через npm, ну и немного дописать все это дело, чтобы баг с неверными типами убрался
GrafMine
ребят, начал изучать либу react-native-reanimated и хотел бы что бы кто-то по русски мне объяснил разницу когда юзать Transitions а когда без него просто Animated подходом можно обойтись
Влад
Всем привет! Как решить ошибку underfined is not an object (evaluating "patient.fullname")
Влад
Влад
Ок
Андрей
Мужики здарова всем, как тестить сборку под айфон, без мака. Норм если буду в експо тестить? Или что посоветуете, как быть
Alex
Вчера ставил, полет нормальный
Alex
Ну или если проект на експо, то с физического устройства)
Alex
Как в native base отключить фиксацию header ?
Андрей
Как загрузить аватар?
Alex
Куда?
Андрей
С галереи
Anonymous
Как загрузить аватар?
Как можно задавать такие вопросы?
Alexander
Тут безопасность очень многослойная проблема... я вообще не считаю, что надо шифровать сессионный токен... в нормальных условиях пользователь вводит логин/пароль или регистрируется, получает токен от сервера и пользуется им для доступа. Зачем ему этот токен вытаскивать из телефона? Это и так его токен. Хуже если телефон крадут. Но это совсем другой уровень защиты нужен. У нас просто служба безопасности придралась, реально я до сих пор не понимаю зачем это и не понимаю вектор атаки, но у меня нет выбора, хотят - сделаем. Просто это не добавляет безопасности никому. Причина почему это не добавляет безопасности очень проста. 1. Если мы хотим обезопасить пользователя и его данные от злоумышленника в сети, то тут ничего с сохраненными токенами не сделать, диск телефона просто не участвует в процессе, это всё вопросы сетевых протоколов. 2. Если мы хотим обезопасить пользователя и его данные от вредоносного приложения, которое тот сам поставил на телефон, то просто не надо сохранять токен в общие, доступные всем приложениям папки. Подходящими местами являются и папка, куда redux-persist данные сохраняет и папка с shared preferences 3. Если мы хотим обезопасить пользователя и его данные от злоумышленника получившего физический доступ к телефону. То это не задача приложения. Для этого в телефоне есть средства шифрования диска и пинкоды/отпечатки пальцев и прочее. 4. Если мы хотим обезопасить данные пользователя от самого пользователя, то, как бы это сказать, это теоретически не реализуемо, если данные попадают в девайс. Единственное что можно было бы сделать - не передавать важные данные в клиент и считать всё, что от них зависит на стороне сервера, возвращая в клиент только результат. Для п.3 в редких случаях, когда безопасность прям очень важна, сделать пин/отпечатки пальца внутри приложения - в современных iOS/Android есть средства для этого. Но это только для действительно важных данные подходит, потому что серьёзно ухудшается удобство использования приложения и возможности (в частности доступ к шифруемым данным будет отсутствовать когда приложение в бэкграунде под залоченным экраном)
по пункту 2 - храниить в доступных только приложению папках - идея неплохая, но рутованные андроиды имеют доступ ко всему. Понятно, что "поставил рут - ссзб", но у безопасников возможно тут свои соображения
Andrei
Тут безопасность очень многослойная проблема... я вообще не считаю, что надо шифровать сессионный токен... в нормальных условиях пользователь вводит логин/пароль или регистрируется, получает токен от сервера и пользуется им для доступа. Зачем ему этот токен вытаскивать из телефона? Это и так его токен. Хуже если телефон крадут. Но это совсем другой уровень защиты нужен. У нас просто служба безопасности придралась, реально я до сих пор не понимаю зачем это и не понимаю вектор атаки, но у меня нет выбора, хотят - сделаем. Просто это не добавляет безопасности никому. Причина почему это не добавляет безопасности очень проста. 1. Если мы хотим обезопасить пользователя и его данные от злоумышленника в сети, то тут ничего с сохраненными токенами не сделать, диск телефона просто не участвует в процессе, это всё вопросы сетевых протоколов. 2. Если мы хотим обезопасить пользователя и его данные от вредоносного приложения, которое тот сам поставил на телефон, то просто не надо сохранять токен в общие, доступные всем приложениям папки. Подходящими местами являются и папка, куда redux-persist данные сохраняет и папка с shared preferences 3. Если мы хотим обезопасить пользователя и его данные от злоумышленника получившего физический доступ к телефону. То это не задача приложения. Для этого в телефоне есть средства шифрования диска и пинкоды/отпечатки пальцев и прочее. 4. Если мы хотим обезопасить данные пользователя от самого пользователя, то, как бы это сказать, это теоретически не реализуемо, если данные попадают в девайс. Единственное что можно было бы сделать - не передавать важные данные в клиент и считать всё, что от них зависит на стороне сервера, возвращая в клиент только результат. Для п.3 в редких случаях, когда безопасность прям очень важна, сделать пин/отпечатки пальца внутри приложения - в современных iOS/Android есть средства для этого. Но это только для действительно важных данные подходит, потому что серьёзно ухудшается удобство использования приложения и возможности (в частности доступ к шифруемым данным будет отсутствовать когда приложение в бэкграунде под залоченным экраном)
Тоже столкнулся с безопасниками и все уязвимости были связаны с той ситуацией, если телефон попадёт в чужие руки
Mike
Ребят помогите пожалуйста с вопросом на тостере, не отображаются на маке google шрифты( https://qna.habr.com/q/736131
Vitaliy
по пункту 2 - храниить в доступных только приложению папках - идея неплохая, но рутованные андроиды имеют доступ ко всему. Понятно, что "поставил рут - ссзб", но у безопасников возможно тут свои соображения
на этот случай сценарий для параноиков - приложение просто не даёт войти (показывает экран с описанием причин) и вычищает всё что связано с токенами и тд из всех хранилищ )
Vitaliy
а тут к тебе придут продуктологи и маркетологи и будут правы междвухогней.jpg
безопасники (если это реально критично, как, например, в банках) в данном случае с маркетологами сами пусть разбираются ) это точно не уровень решений разработчика
Gena
на этот случай сценарий для параноиков - приложение просто не даёт войти (показывает экран с описанием причин) и вычищает всё что связано с токенами и тд из всех хранилищ )
Ну вот я в принципе выше описал разные варианты и да, для параноиков есть тоже специальные API... но они все ухудшают юзабилити (к примеру после блокировки экрана у приложения больше нет доступа к токенам и оно не может в бэкграунде с сервером общаться) и на самом деле требуют отдельных обработчиков в приложении
Gena
А так есть чудесный апи (в Android) - Keychain, он может сгенерить и хранить ключ, который очень затруднительно вытащить и этим ключом может пользоваться только приложение его сгенерившее (это одна из возможностей, там гибко конфигурится) при том таким образом, что ключ даже не попадает в память процесса приложения
Gena
Но вот оба распространенных модуля react-native-keychain и react-native-sensitive-info (по памяти названия)... не используют эту фичу в таком режиме и работают по принципу - либо у вас фингерпринт/pin и тогда да шифрование, либо просто в shared settings
GrafMine
ребят подскажите пожалуйста, почему при разделении логики на контейнер\компонент, у меня не работает ref? а если совместить все в одну функцию работает рефа и соответсвенно анимация работает правильно. :(
Gena
Но вот оба распространенных модуля react-native-keychain и react-native-sensitive-info (по памяти названия)... не используют эту фичу в таком режиме и работают по принципу - либо у вас фингерпринт/pin и тогда да шифрование, либо просто в shared settings
И только rn-secure-storage делает ровно то, что надо. Но! Я поглядел в исходники - он написан опасно - имя ключа для секретных данных без всякого эскейпинга/энкодинга становится частью пути к файлу с зашифрованными данными. Т.е. туда нельзя просто передавать не свои константы, а чужие данные.
Gena
А то сделает пользователь себе логин вида 'myName/../../../some-thing-interesting' и тра-та-та ))
Andrei
по идее такой логин должен резаться валидатором
Gena
по идее такой логин должен резаться валидатором
Да, но я считаю, что библиотека сохраняющая абстрактные данные по абстрактному ключу, тоже должна валидировать/кодировать этот ключ, если использует его как имя файла )))
Andrei
+
Эдуард
SPA?
Спасибо
Jurij
Jurij
Привет. Подскажите где менять версию приложения? )
Jurij
package json что ли?
Anton
Alex
А вообще лучше юзать fastlane для выливки приложений в маркеты - https://fastlane.tools/
Anton
А вообще лучше юзать fastlane для выливки приложений в маркеты - https://fastlane.tools/
я даже тулзу написал, которая позволяет юзать фастлайн из жс))) https://github.com/lamantin-group/fastpush пока обкатываю еще, но вроде работает
Denys
Ребята, есть вопрос, подключаю сентри, вот все работает и нативный креш выдает, но никакие креши в кабинет не приходяь, подключал через dsn и все делал по гайду, может кто подскажет в чем может быть проблема?
Denys
Креши отправляются при следующем старте приложения (успешном старте). Это проверяли?
да, билд неделю в проде, а в крешах пусто, хотя в файрбейз насыпало
Vitaliy
да, билд неделю в проде, а в крешах пусто, хотя в файрбейз насыпало
а firebase crashlytics случайно не прикручен параллельно ?
Denys
да
Denys
это проблема?