Имя: Пароль:
1C
 
Мобильный клиент определить iOS или Android
, ,
0 mastodont
 
28.10.21
14:46
Подскажите, как определить где запущен мобильный клиент на айфоне или андроиде?
1 aka MIK
 
28.10.21
14:50
СистемнаяИнформация
2 Garykom
 
гуру
28.10.21
14:51
вот с версией сложней
3 Garykom
 
гуру
28.10.21
14:51
(2)+ и вендором/моделью
4 H A D G E H O G s
 
28.10.21
14:54
Функция ЭтоIOS() Экспорт
    СИ=Новый СистемнаяИнформация();
    ВерсияОС=СИ.ВерсияОС;
    ВерсияОС=ВРЕГ(ВерсияОС);
    Возврат Найти(ВерсияОС,"IOS")<>0;
КонецФункции

Функция ЭтоANDROID() Экспорт
    СИ=Новый СистемнаяИнформация();
    ВерсияОС=СИ.ВерсияОС;
    ВерсияОС=ВРЕГ(ВерсияОС);
    Возврат Найти(ВерсияОС,"ANDROID")<>0;
КонецФункции
5 Garykom
 
гуру
28.10.21
14:55
(4) это реальные функции в проде или просто пример?
6 Garykom
 
гуру
28.10.21
14:55
(5)+ просто ну изврат же так писать
7 Garykom
 
гуру
28.10.21
14:57
(6)+ Для Windows у тебя еще одна функция да?
А если условие ИначеЕсли надо?
8 acht
 
28.10.21
15:00
(4) Вот выйдет 1С на KolibriOS, наплачешся! =)
9 H A D G E H O G s
 
28.10.21
15:02
(8) Я уже плачу от того, как Егора косоебит :-)
10 Garykom
 
гуру
28.10.21
15:13
(9) У тебя реально в проде такой говнокод?
11 Конструктор1С
 
28.10.21
15:14
Попахивает хардкодингом
12 mastodont
 
28.10.21
15:28
Я реально не понял в чем притензии к (4).
Вполне удобно использовать, например:
Если ЭтоANDROID() Тогда

Иначе

КонецЕсли;
13 H A D G E H O G s
 
28.10.21
15:31
(12) Это у них личное.
14 Garykom
 
гуру
28.10.21
15:33
(12)

Если ЭтоANDROID() Тогда

ИначеЕсли ЭтоIOS() Тогда

ИначеЕсли ЭтоWindows() Тогда

Иначе

КонецЕсли;

сам не видишь изврата когда много раз СистемнаяИнформация дергается?
15 mikecool
 
28.10.21
15:49
холивар... ))
16 acht
 
28.10.21
17:55
(14) А разверни, пожалуйста, мысль. Допиши кусок кода, который будет внутри каждой ветки. Ну, пример какой-нибудь, который должен действительно по разному реализовывать одно и тоже.
Только не вызов метода СделатьЧтоТоНаWindows, прояви фантазию.
17 pechkin
 
28.10.21
18:08
(14) паттерн матчинг в 1с не завезли
18 pechkin
 
28.10.21
18:09
(16) текст ссылки на магазин или оценить приложение
19 Garykom
 
гуру
28.10.21
18:09
(16) Например работа с файлами
20 pechkin
 
28.10.21
18:10
(19) вроде в послдених версиях одинаково никому ничего нельзя
21 Garykom
 
гуру
28.10.21
18:14
(17) к черту паттерн матчинг

Почему не сделать одну функцию которая возвращает значение?


Функция ОпределитьШмель()
    СИ=Новый СистемнаяИнформация();
    ВерсияОС=СИ.ВерсияОС;
    ВерсияОС=ВРЕГ(ВерсияОС);
    Шмель = "";
    Если Найти(ВерсияОС,"IOS")<>0 Тогда
        Шмель = "iOS";
    ИначеЕсли Найти(ВерсияОС,"ANDROID")<>0 Тогда
        Шмель = "Android";
    //...
    Иначе
        //...
    КонецЕсли;
    Возврат Шмель;
КонецФункции


применение

Шмель = ОпределитьШмель();
Если Шмель = "iOS" Тогда

ИначеЕсли Шмель = "Android" Тогда

ИначеЕсли Шмель = "Windows" Тогда

Иначе

КонецЕсли;
22 Garykom
 
гуру
28.10.21
18:15
(20) В своей песочнице все можно
Имена песочниц разные
23 Garykom
 
гуру
28.10.21
18:17
(21)+ Из которой простейше получаются обертки

Функция ЭтоIOS() Экспорт
    Возврат ОпределитьШмель()="iOS";
КонецФункции

Функция ЭтоAndroid() Экспорт
    Возврат ОпределитьШмель()="Android";
КонецФункции

24 Cyberhawk
 
28.10.21
18:19
(23) А чем это отличается от (14)? Точно так же будет каждый раз дергаться СистемнаяИнформация...
25 Garykom
 
гуру
28.10.21
18:21
(24) "Модуль с повторным использованием возвращаемых значений"
https://infostart.ru/1c/articles/668213/

Или в некие параметры сеанса при запуске однократно сохранить и оттуда дергать уже Это
26 Конструктор1С
 
28.10.21
19:04
(12) если берёшься хардкодить, то хотя бы постарайся, чтобы твой хардодинг был на самом-самом низу в конечной функции. Вот такое никогда не делай:

Если ЭтоANDROID() Тогда
   СтекНаДесятьУровней();
Иначе
   ДругойСтекНаПятнадцатьУровней();
КонецЕсли;