Таблица лидеров
-
во всех областях
- Все области
- Adverts
- Advert Questions
- Advert Reviews
- Файлы
- Комментарии к файлам
- Отзывы к файлам
- Записи блога
- Комментарии блога
- Изображения
- Комментарии к изображениям
- Отзывы к изображению
- Альбомы
- Комментарии к альбому
- Отзывы к альбому
- События
- Комментарии к событиям
- Отзывы к событиям
- Сообщения
- Статусы
- Ответы на статус
-
Пользовательская дата
-
Всё время
9 октября 2021 - 14 декабря 2025
-
Год
14 декабря 2024 - 14 декабря 2025
-
Месяц
14 ноября 2025 - 14 декабря 2025
-
Неделя
7 декабря 2025 - 14 декабря 2025
-
Сегодня
14 декабря 2025
-
Пользовательская дата
15.01.2023 - 15.01.2023
-
Всё время
Популярные публикации
Отображаются публикации с наибольшей репутацией на 15.01.2023 во всех областях
-
3 балла
-
3 балла
-
2 балла
-
2 балла
-
2 балла
-
2 балла
-
2 балла
-
2 балла
-
2 балла
-
2 балла
-
1 балл
-
1 балл
-
1 балл
THIS ADVERT HAS EXPIRED!
- FOR SALE
- NEW
СКИММЕР-ЭТО УСТРОЙСТВО, КОТОРОЕ ПОМЕЩАЕТСЯ ВНУТРИ БАНКОМАТА ИЛИ POS. СКИММЕР EMV ПЕРЕХВАТЫВАЕТ СООБЩЕНИЯ МЕЖДУ ЧИПОВОЙ КАРТОЙ И СЧИТЫВАТЕЛЕМ ЧИПОВЫХ КАРТ ИЗ БАНКОМАТА ИЛИ POS. СКИММЕР EMV ЗАПИШЕТ ИНФОРМАЦИЮ О КРЕДИТНОЙ КАРТЕ, ТАКИМ ОБРАЗОМ, ИНФОРМАЦИЯ О КРЕДИТНОЙ КАРТЕ БУДЕТ УКРАДЕНА. СКИММЕР EMV-ЭТО УСТРОЙСТВО, КОТОРОЕ ПОМЕЩАЕТСЯ ВНУТРИ БАНКОМАТА ИЛИ POS ДЛЯ ПЕРЕХВАТА СВЯЗИ МЕЖДУ ЧИПОВОЙ КАРТОЙ И СЧИТЫВАТЕЛЕМ ЧИПОВЫХ КАРТ ИЗ БАНКОМАТА ИЛИ POS И ЗАПИСИ ИНФОРМАЦИИ О КРЕДИТНОЙ КАРТЕ, ТАКИМ ОБРАЗОМ, ИНФОРМАЦИЯ О КРЕДИТНОЙ КАРТЕ БУДЕТ УКРАДЕНА. Скиммер Emv-это устройство, которое помещается внутри банкомата или POS для перехвата сообщений и записи кредитной карты между чиповой картой и считывателем чипов из банкомата или POS, таким образом, вся информация о кредитной карте похищается. У вас будет быстрый и простой трек 1, трек 2 и PIN-код со всех кредитных карт, которые используют эти банкоматы или POS. Вы можете загрузить информацию с скиммера Emv, подключив телефон или ноутбук по Bluetooth к скиммеру Emv. Такое устройство СКИММЕРА EMV может не только считывать данные владельца карты с чипа, но и перехватывать PIN-код. УСТРОЙСТВО СКИММЕРА EMV создает копию исходной карты, включая все стандартные проверки подлинности SDA-Статическая проверка подлинности данных, DDA - Динамическая проверка подлинности данных, CDA-Комбинированная проверка подлинности данных. С помощью нашего устройства EMV Скиммер вы можете очень легко получить всю информацию о кредитной карте из любого банкомата или POS. С помощью устройства СКИММЕРА EMV вы можете получить трек 1 + 2 + Pin.1,600.00 USD
-
1 балл
-
1 баллПо сути вся черная пятница тупой мусор , а не распродажа
-
1 баллОчень долго это все будет развиваться и конкуренция появится так же быстро , поэтому не рекомендую кому то пробывать , изначально провальная схема или как ты говоришь готовый бизнес- план
-
1 баллСегодня я бы хотел Вам рассказать о одном интересном способе получения трафика вконтакте. Сразу скажу теме over 1000 лет, но я ее встретил года 3 назад последний раз, а так как телефоны сейчас есть у всех, то это нам на руку. Сам способ: Спамить мы будем по средствам упоминания вконтакте: Я думаю все знают как это делать, но для тех кто не знает: На стене Вконтакте пишем: «@id1», после внизу/вверху поста появляется строка (на скриншоте выделена красным цветом): Нажимаем на неё получаем текст такого вида: «@id1 (Павел Дуров)». После того как опубликуете получиться гипер-ссылка такого вида: «Павел Дуров» ведущая на страницу id1. Есть много сервисов, которые парсят аудиторию и в основном они бесплатные, но нужно залогиниться через вк. Советую покупать аккаунт за 10 рублей и авторизовываться через него Далее нум нужно создать пустую группу, оформить ее немного, фото, описание, пост с информацией. Пример спам-поста: У тебя есть шанс получ6ить iphone X *тут гипер ссылка с именем и фамилией* бесплатно. Подробности по ссылке: тут ссылка Если лень постить по одному юзеру, тогда можно сделать такой пост, но конверсия будет меньше: Вы попали в список победителей, у которых есть шанс получить iphone X. Список победителей: Иван Иванов Петр Петров Саша Александров Текст делать под свой лад, проявлять творческий подход. Мой пример, в этом посте около 500 id пользователей, набрал пост почти 4к просмотров.
-
1 баллНебольшое предисловие. Как часто вы подключаетесь к общественным сетям? Держу пари, не всегда есть возможность «закинуть» себе денег на телефон, но нужда в подключении к Интернету существует всегда. Представьте, вы едете в троллейбусе, и ведёте переписку со своей второй половинкой. И в один момент у вас внезапно заканчивается доступный трафик. К сожалению, в троллейбусе негде пополнить счёт, но ведь всегда есть общественный Wi-Fi! Если вы не особо заботитесь о безопасности своих данных, смело к нему подключайтесь и продолжайте обмениваться смайликами со своей любимой, или любимым. Однако, если вам важна ваша конфиденциальность, есть смысл продолжить читать данную статью, ведь при наличии смартфона с Root-правами каждый первый может попросту украсть ваш аккаунт в соц-сети, или получить доступ к вашему почтовому ящику. Теоретическая часть. Обмен данными в интернете происходит в зашифрованном виде. В рамках данной статьи нас не интересует, как происходит отправка пакетов данных от пользователя к веб-серверу. Нас больше интересует обратный путь датаграмм к пользователю. Итак, после обработки HTTP-запроса сервер проверяет, имеет ли клиент право использовать GET-запрос, и если ответ положительный – сервер находит контент, запрашиваемый клиентом, шифрует его в пакет, и с помощью PHP отправляет результат назад. Вор информации не может использовать GET- запрос, так как доступ к нему имеется только у человека, владеющего нужной информацией (в случае с соц-сетью - это логин и пароль). Однако не всегда хакеру нужно отсылать GET-запрос - достаточно чтоб это сделал человек, находящийся с ним в одной подсети. Этой подсетью в данном случае и выступает Wi-Fi сеть. Взломщику лишь достаточно в нужный момент «подцепить» приходящий пакет данных, который в любом случае проходит через подсеть, записать cookie, и дело в шляпе. Для проведения такого рода взлома и существует cSploit для Андроид. Как же это происходит на практике. Итак, краткий экскурс в программу. Официально cSploit используется для анализа Wi-Fi сети на безопасность, но мы будем рассматривать немного иное применение программы. Но только в рамках закона. Внимание! Для работы программы необходимы Root-права и библиотеки BusyBox. Надеюсь, с их установкой не должно возникнуть проблем. Теперь, когда мы более детально знаем, как и когда пользователь получает данные с сервера, пришло время рассмотреть способ их перехвата с помощью сSploit. Инструкция. Установить Root права, а также BusyBox. Скачать cSploit, и также установить его на смартфон. Если первые два шага были выполнены корректно - при запуске приложения и подключении к Wi-Fi вы увидите все подключенные к сети устройства. Далее необходимо выбрать «жертву» и тапнуть по ней один раз. Перед вами появилось множество интересных модулей для влияния на выбранный девайс, но нас интересует раздел MITM (man-in-the-middle). Выбираем его. Далее выбираем раздел «сниффер сессий». Не вижу смысла объяснять что это такое, ведь название говорит само за себя J Теперь, если вы знакомы с жертвой лично, можете посредством соц. инженерии «убедить» его, что ему срочно надо зайти к себе в «Контакт», либо дождаться когда он это сам сделает. В момент, когда жертва войдет в свой аккаунт - на вашем смартфоне в списке перехваченных сессий появится новая, зачастую проименнованная простым IP сессия, которую и надо перехватить. Производим перехват простым тапом и подтверждением. Профит! Открывается браузер со страничкой жертвы. Теперь вы можете вносить изменения на аккаунте жертвы, читать и писать сообщения, а также загружать фото (к примеру). Как видите, для взлома необязательно иметь обширные знания в области программирования, принадлежать к Анонимусу, или иметь крутой хакерский софт на пару с мощными девайсами. Каждый ребёнок при должной сноровке может провернуть такое нехитрое дельце, именно поэтому целью данной статьи было не выращивание нового поколения хакеров, а предупреждение о возможной опасности ваших данных. Будьте бдительны, осторожны, и не размещайте слишком много информации о себе в Интернете. Всем удачи!
-
1 балл
-
1 баллИнформация в разных источниках сильно отличается и тяжело дать однозначный ответ, но я постарался подобрать для вас максимально полезную и достоверную информацию. Виды тестов и их особенности Есть несколько способов определения наличия вредных токсинов и продуктов их распада в организме – это взять на анализ Ваши волосы, ногти, кровь, слюну, пот и мочу. В России основное распространение получил анализ мочи. Поэтому мы кратко опишем особенности сдачи других тестов, а про сдачу анализа мочи расскажем подробнее. В волосах и ногтях метаболиты вредных токсинов остаются дольше всего, но в России эти тесты большая редкость. Их проводят в исключительных случаях. Метаболиты вредных токсинов - побочные продукты их распада, остающиеся в Вашем организме после их употребления. Экспресс тесты имеют пороговый уровень 50 ng/l метаболитов вредных токсинов в анализе. Это означает, если у Вас 51 ng/l в моче, Вы потерпите неудачу, и если у Вас - 49 ng/l, Вы пройдете тест. Проблема иммуно-хроматографических тестов в том, что они не очень точны, и могут давать ложно-положительные результаты в 25 % случаев. Ложное положительное показание означает, что исследование показывает наличие в анализе запрещённых вредных токсинов, когда фактически другое вещество (Ибупрофен, Противозастойное средство, Мак, и т.д.) стало его причиной. Надо быть осторожнее при приёме лекарственных средств без рецепта. Ложно положительная реакция на наличие метаболитов вредных токсинов в вашем анализе будет поводом для отправления его на более точное, дорогостоящее исследование в лабораторию. Именно поэтому ВАЖНО пройти экспресс тест, что бы не было повода для детального исследования вашего анализа мочи в лаборатории на примеси, химический состав и др. Какие бывают тесты на наличие наркотика в моче? Это самый распространенный тест, так-что я уделю ему особое внимание. Их существует огромное множество. Дешевые определяют 1-2 наркотика, дорогие до 10 и больше. Вот пример самого дешевого теста на марихуану в моче: А вот этот тест чаще всего используется в больницах РФ: Пример дорогого теста на 5 наркотиков: Как можно понять из этих фото, если вы употребляете относительно непопулярный наркотик (мет, кокс) то велика вероятность, что при стандартной процедуре проверки в вашей моче не обнаружат следы употребления этих веществ. Мифы про обман теста на наркотики в моче Уксус: Добавление уксуса к Вашей моче резко изменит её РН. Один из тестов на образце мочи - проверка уровня PH. Вы не пройдёте тест, если Вы добавите уксус к своему анализу. Visine: Добавление Visine к Вашему анализу мочи вспенит его и вызовет непосредственное подозрение. Не добавляйте Визина к своему образцу мочи. Вы рискуете отправиться на освидетельствование более точным методом в лабораторию. Аммиак: Добавление аммиака к Вашей моче аналогично уксусу сильно изменит уровень РН. Результат описан выше. Столовая соль: Добавление соли к Вашему образцу даст отрицательный результат теста, но выводит удельную массу из нормальных диапазонов тела (Удельная масса - один из проверяемых параметров в анализе). Остаток соли может также быть замечен на дне ёмкости для анализа. Вы не пройдете тест, если добавите столовую соль к своему анализу. Средство для чистки труб - При его добавлении PH образца изменится резко, и моча приобретёт синеватый оттенок. Вы не пройдете тест. Отбеливатель - Та же самая вещь как и очиститель канализационных труб. Кроме всего, все эти добавки испортят экспресс тест, а не обманут его. То есть тест-полоски покажут ошибочный результат, что будет поводом для лишних подозрений и проведения повторного теста или отправки Вас для более точного аназиза в стационарную лабораторию. Как все таки можно обмануть тест на наркотики в моче? Разных креативных способов великое множество, но большинство из них работают только в теории. Эти два работают на 90% стабильно. Вариант первый: подмена мочи. Моча для теста на наркотики в больницах/школах/университетах/военкомате сдается в туалете с закрытой дверью. Вы можете незаметно принести чужую мочу и просто налить ее в стакан. Важно, эта моча не должна быть старше 12 часов и она должна быть теплой. Сосуд с мочей следует держать вплотную к телу для поддержания температуры. Кстати, существуют специальные химические нагревательные элементы, они компактные и выполнены в виде небольшого пакета, как увеличенная пачка презервативов. Вариант второй: очистка организма. Тут тоже есть два способа. Способ первый: разгон метаболизма. Подходит в том случае, если у вас есть хотя-бы неделя до прохождения теста. Пейте 4+ литра воды в сутки. Пейте мочегонное. Займитесь спортом (кардио). Вам нужен учащенный пульс и обильное потоотделение. Попробуйте сходить в баню. Не ешьте жирную еду. Ешьте больше овощей. Принимайте витамины группы В. В день теста перед проверкой обязательно сходите в туалет 2-3 раза. Все эти действия помогут понизить концентрацию наркотических веществ в вашей моче и тест их не распознает. Способ второй: экспресс детоксикаторы. Можно найти в интернете, но я не советую брать специализированные под экспресс очистку организма от наркотиков. Чаще всего это мошенники, которые продают нерабочие препараты по цене от 100$. Возьмите детоксикатор для чистки печени, почек и ЖКТ и совместите его прием с первым способом. Как очистить кровь и слюну? Так же, как и в случае с мочей. Как вывести наркотики из ногтей или волос? Увы, никак. Даже если вы побреете все тело и вырвите себе ногти (что само по себе достаточно подозрительно), наркотик можно будет обнаружить в волосяных луковицах. А если и их вы удалите (лазерная эпиляция), его можно будет обнаружить в межклеточной ткани. Неприятная процедура. Благо в странах СНГ, как правило, все заканчивается проверкой мочи. Вывод: Ваша задача - не завалить тест мочи. Остальные тесты обмануть будет куда сложнее. Для этого откажитесь от употребления за 10 дней и начните процедуру очистки организма. Много воды, правильное питание. Сходите в туалет перед сдачей мочи. Если вы не могли знать заранее о тесте - сдайте чужую мочу. Не покупайте синтетическую мочу, возьмите чистую мочу другого человека. При сдаче она должна быть свежей (не старше 12 часов) и теплой (32,5-37 градусов Цельсия).
-
1 балл
-
1 балл
-
1 баллВ общем, тема действенная, сам работаю до сих пор и буду работать. Немного сложности будет в начале, но после, вся это сложность окупается. По затратом я начинал с 4 тысяч окупил за день(но можно и без вложений, но это сложнее). Итак начнём: Если Вы человек который разбирается в машинах то Вам это очень пригодится(Я нет) Если Вы человек у которого есть машина, Вам это очень пригодится(У меня нет, не люблю машины) Суть заработка в договорах купли продажи авто! Нам для этого понадобится: узнать цены оформление договора, в Вашем городе, найти образец договора, попытаться заполнить его на обум и снести в гаи на проверку. Если с первыми понятно то с гаи могут возникнуть недопонимания, лично я шёл туда с бутылкой коньяка(эта затрата так же вписана в 4 тысячи), спрашивал там, с кем можно поговорить по поводу договора купли-продажи авто, меня направили к человеку, я попросил его сказать где у меня ошибки на бланке, и всучил ему коньяк. После этого он разжевал вообще всё, и сказал что если будут какие то проблемы обращаться, обменялись номерами, поцелу.... и я ушёл. Стоит так же написать что заполнить договор может реально любой дурак, кроме меня, я в этом плане оказался очень дебилом у которого проблемы возникли с кузовом и шасси(не разбираюсь в машинах, шо аш пипец) После того как мы всё выяснили можем приступать к извлечению прибыли! Я живу в мухосранске где численность населения всего лишь 300к человек, по этому если город миллионник, готовтесь к тому что клиенты вам покоя не дадут даже ночью. Первоначально определяемся с ценой за наши услуги, в моём городе оформления такой бумажки стоит от 1 тыщи до 1.5 тыщи, тем самым у меня стоит цена 500 рублей за договор + гарантия возрата средств в ближайшии 2 дня + выезд 200р(если далеко, брал больше). Выезд к месту машины, так как у нас пока нет офиса и мы только начали работать по этому обыграваем так. На вопрос клиента - "А можно ли подъехать в офис" отвечам - "К сожалению со вчерашнего дня офис закрыт на ремонт, но у нас есть услага, по которой мы сами можем подъехать" за всё мою трудовую деятельность отказались единицы, все остальные соглашались, ибо дешевле, ибо им не куда ехать не надо, да плюс ещё гарантия. Второе, я работаю в паре с человеком, якобы он мой стажёр. Приезжаем к клиентам в костюме(обязательно! я затраты на костюм не вписывал, думаю у многих он есть, если нет то хотябы опрятный внешний вид. Вы профессионал! И должны показывать это всем внешним видом), здороваемся за руки, представляемся, задаём наводящие вопросы типо кто покупает? Кто продаёт? и тд. После чего осматриваем машины, но не пристально(мы не автомиханики) и не заинтересованным взгялдом, типо это наше обычное дело, обходим её по кругу. А после, начинаем заполнять договор. Нам потребуется 2 паспорта, покупателя и продовца, Паспорт транспортного средства (ПТС), Регистрационное свидетельство транспортного средства (СТС). Договор заполнен, получили денежку, улыбаясь, попрощались, вручили вашу визитку(можете распечатать на принтере, но не желательно. В типографии я сделла 100 штук за 100-150 рублей), ушли. Всё! у меня в кармане за 30 мин работы 700 рублей, и то из этих 30 минут 15-20 я трачу на то что бы добраться. За день я минимум объязжаю 5 клиентов, максимум было 13, просто физически устаёшь кататься. Сейчас я работаю не один, а с четырьмя знакомыми, уже зарегистрированная своя фирма, и есть офис. Прибыль вообще нормальная, темболее как появилась фирма, мы расширили свою трудовую деятельность) Как же нам искать клиентов? Есть два способа, платный и бесплатный (но лучше их объяденить). Платный реклама в группах ВК Вашего города(основной поток клиентов), радио автолюбителей, у нас название - дорожное радио, Бесплатный - это расклейка объявлений, доски. Мне этого хватала за глаза. По прибыли, 500+200(250)=700(750) за день 5-7 человек стабильно. 6(среднее)*700 = 4 200\за день. Если есть машина, прибыль немного уменьшиться, за счёт траты бензина, но зато уменьшится и время работы, да и комфортность. Писать всякую чушь не надо, тема реально рабочая даже в городе с небольшим населением, сам работаю и бду работать, не много сезонная - да, прибыль весною увеличавается, зимою подсподает. В общем если есть вопросы задавайте в теме или в ЛС, постораюсь всё объяснить. По ответственности: НЕТ НЕ КАКОЙ ОТВЕСТВЕННОСТИ за неправильно составленный договор
-
1 балл
-
1 балл
-
1 балл
-
1 баллВсем спасибо за отзывы! Кто прикрепляет фотографии получает скидку на следующий заказ !!
-
1 баллКогда в CRM 57000 контактов, людям совсем не хочется записывать их в айфон вручную. Надо найти решение поизящней, которое позволит не просто искать контакты в отдельном приложении, но и отображать имя человека при входящем звонке. Мы долго гуглили, а потом вспомнили про анонс фреймворка CallKit с WWDC. Информации по этой теме оказалось не так много: немногословная документация, статья на Хабре и ни одного пошагового руководства. Хочу восполнить этот пробел. На примере создания простого приложения покажу, как научить CallKit определять тысячи номеров. Определяем один номер Для начала попробуем определить один единственный номер. Начнем с пустого проекта. Создадим Single View Application с именем TouchInApp. Добавим extension для определения номеров. В меню Xcode выберите File > New > Target… В разделе Application Extension выберите Call Directory Extension, нажмите Next. В поле Product Name введите TouchInCallExtension, нажмите Finish. В появившемся алерте нажмите Cancel. Надеюсь, вы уже подготовили тестовый телефон, с которого будете звонить. Если нет, то сейчас самое время. В Project navigator раскройте TouchInCallExtension и откройте CallDirectoryHandler.swift. Найдите функцию addIdentificationPhoneNumbers. Там вы увидите массивы phoneNumbers и labels. Удалите номера из phoneNumbers, впишите туда тестовый номер. Удалите содержимое массива labels, впишите туда «Test number». У вас получится что-то вроде этого: private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws { let phoneNumbers: [CXCallDirectoryPhoneNumber] = [ 79214203692 ] let labels = [ "Test number" ] for (phoneNumber, label) in zip(phoneNumbers, labels) { context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) } } CXCallDirectoryPhoneNumber — просто typealias для Int64. Номер должен быть в формате 7XXXXXXXXXX, то есть сначала код страны (country calling code), потом сам номер. Код России +7, поэтому в данном случае пишем 7. Поставьте приложение на устройство и тут же закройте. В нем пока нечего делать. Зайдите в настройки телефона > Phone > Call Blocking & Identification. Найдите там приложение TouchInApp и позвольте ему определять и блокировать вызовы. Бывает, что приложение не сразу появляется в списке. В таком случае закройте настройки, откройте и закройте еще раз приложение и попробуйте снова. Когда вы переводите Switch в состояние On, вызывается addIdentificationPhoneNumbers из ранее добавленного расширения и считывает оттуда контакты. Позвоните с тестового номера на ваше устройство. Номер должен определиться. Определяем тысячи номеров Все это, конечно, здорово, но это всего лишь один номер. А в начале статьи речь шла о тысячах контактов. Очевидно, что мы не будем их все вручную переписывать в массивы phoneNumbers и labels. Итак, контакты мы должны добавлять в расширении. Из приложения мы это сделать не можем. Мы можем лишь вызвать функцию reloadExtension, вызов которой приведет к вызову addIdentificationPhoneNumbers. О ней я расскажу чуть позже. Так или иначе, приложение будет иметь доступ к контактам. Либо они сразу будут с ним поставляться в определенном формате, либо мы будем получать их по запросу к API, либо как-то еще — неважно. Важно, что расширение должно каким-то образом получить эти контакты. Давайте на секунду отвлечемся и проведем небольшую аналогию. Представьте, что у вас есть кот. Если есть, можете не представлять. Вы просыпаетесь утром и собираетесь его покормить. Как вы будете это делать? По всей вероятности, насыпете корм в миску. А уже из нее кот покушает. А теперь представьте, что Call Directory Extension — это кот, а вы — приложение. И вы хотите накормить контактами Call Directory Extension. Что в нашем случае будет исполнять роль миски, которую мы должны наполнить контактами и из которой extension впоследствии будет их потреблять? К сожалению, вариантов у нас не так много. Мы не можем использовать Core Data или SQLite, так как очень сильно ограничены в ресурсах во время работы расширения. Когда вы редактировали функцию addIdentificationPhoneNumbers, вы наверняка заметили комментарии. Там говорится о том, что «Numbers must be provided in numerically ascending order.». Сортировка выборки из базы слишком ресурсоемка для расширения. Поэтому решение, использующее БД, нам не подходит. Все, что нам остается — использовать файл. Для простоты реализации будем использовать текстовый файл следующего формата: Использование этого формата не ведет к оптимальной производительности. Но это позволит сделать акцент на основных моментах, вместо того, чтобы погружаться в работу с бинарными файлами. Увы, мы не можем просто так взять и получить доступ к одному файлу как из приложения, так и из расширения. Однако, если воспользоваться App Groups, это становится возможным. Делимся контактами с помощью App Groups App Group позволяет приложению и расширению получать доступ к общим данным. Более подробно написано в документации Apple. Если вы никогда с этим не работали — не страшно, сейчас я расскажу, как это настроить. В Project navigator кликните по вашему проекту. Выберите target приложения, перейдите на вкладку Capabilities, включите App Groups. Добавьте группу «group.ru.touchin.TouchInApp». Логика тут та же, что и с bundle identifier. Просто добавьте префикс group. У меня bundle identifier — «ru.touchin.TouchInApp», соответственно, группа — «group.ru.touchin.TouchInApp». Перейдите к target'у расширения, перейдите на вкладку Capabilities, включите App Groups. Там должна появиться группа, которую вы вводили ранее. Поставьте на ней галочку. Если мы используем опцию «Automatically manage signing», App Groups настраиваются достаточно легко. Как видите, я уложился в пару абзацев. Благодаря этому я могу не превращать статью о CallKit в статью об App Groups. Но если вы используете профайлы из аккаунта разработчика, то нужно в аккаунте добавить App Group и включить ее в App ID приложения и расширения. Записываем контакты в файл После включения App Group можем получить доступ к контейнеру, в котором будет храниться наш файл. Делается это следующим образом: let container = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: "group.ru.touchin.TouchInApp") «group.ru.touchin.TouchInApp» — это наша App Group, которую мы только что добавили. Назовем наш файл «contacts» и сформируем для него URL: guard let fileUrl = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: "group.ru.touchin.TouchInApp")? .appendingPathComponent("contacts") else { return } Немного позже вы увидите полный код, сейчас я просто хочу пояснить некоторые моменты. Теперь нужно записать в него номера и имена. Предполагается, что они у вас уже подготовлены в следующем виде: let numbers = ["79214203692", "79640982354", "79982434663"] let labels = ["Иванов Петр Петрович", "Сергеев Иван Николаевич", "Николаев Андрей Михайлович"] Напомню, что номера должны быть с правильным кодом страны и отсортированы в порядке возрастания. Теперь сформируем из контактов будущее содержимое файла: var string = "" for (number, label) in zip(numbers, labels) { string += "\(number),\(label)\n" } Каждую пару номер-имя записываем в одну строку, разделяя запятой. Завершаем символом перевода строки. Записываем все это дело в файл: try? string.write(to: fileUrl, atomically: true, encoding: .utf8) А теперь самое интересное. Нужно сообщить расширению, что миска наполнена и пора подкрепиться. Для этого вызовем следующую функцию: CXCallDirectoryManager.sharedInstance.reloadExtension( withIdentifier: "ru.touchin.TouchInApp.TouchInCallExtension") Параметр функции — bundle identifier расширения. Полный код: @IBAction func addContacts(_ sender: Any) { let numbers = ["79214203692", "79640982354", "79982434663"] let labels = ["Иванов Петр Петрович", "Сергеев Иван Николаевич", "Николаев Андрей Михайлович"] writeFileForCallDirectory(numbers: numbers, labels: labels) } private func writeFileForCallDirectory(numbers: [String], labels: [String]) { guard let fileUrl = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: "group.ru.touchin.TouchInApp")? .appendingPathComponent("contacts") else { return } var string = "" for (number, label) in zip(numbers, labels) { string += "\(number),\(label)\n" } try? string.write(to: fileUrl, atomically: true, encoding: .utf8) CXCallDirectoryManager.sharedInstance.reloadExtension( withIdentifier: "ru.touchin.TouchInApp.TouchInCallExtension") } Читаем контакты из файла Но это еще не все. Мы не подготовили расширение к тому, чтобы оно могло этот файл прочесть. Попросим его читать файл по одной строчке, вычленять из строки номер и имя. Дальше поступаем так же, как с тестовым номером. Увы, iOS не предоставляет возможность читать текстовые файлы построчно. Воспользуемся подходом, предложенным пользователем StackOverflow. Скопируйте к себе класс LineReader вместе с расширением. Вернемся к файлу CallDirectoryHandler.swift и внесем изменения. Сначала получим URL нашего файла. Делается это точно так же, как и в приложении. Затем инициализируем LineReader путем к файлу. Читаем файл построчно и добавляем контакт за контактом. Код обновленной функции addIdentificationPhoneNumbers: private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws { guard let fileUrl = FileManager.default .containerURL(forSecurityApplicationGroupIdentifier: "group.ru.touchin.TouchInApp")? .appendingPathComponent("contacts") else { return } guard let reader = LineReader(path: fileUrl.path) else { return } for line in reader { autoreleasepool { // удаляем перевод строки в конце let line = line.trimmingCharacters(in: .whitespacesAndNewlines) // отделяем номер от имени var components = line.components(separatedBy: ",") // приводим номер к Int64 guard let phone = Int64(components[0]) else { return } let name = components[1] context.addIdentificationEntry(withNextSequentialPhoneNumber: phone, label: name) } } } Функция должна использовать минимум ресурсов, поэтому заверните итерацию цикла в autoreleasepool. Это позволит освобождать временные объекты и использовать меньше памяти. Все. Теперь после вызова функции addContacts телефон будет способен определять номера из массива numbers. Окончательную версию проекта можете скачать в репозитории на GitHub. Что дальше? Это лишь один из вариантов решения задачи. Его можно улучшить, используя бинарный файл вместо текстового, как сделал 2GIS. Это позволит быстрей записывать и читать данные. Соответственно, придется продумать структуру файла, а также переписать функции для записи и чтения. Когда у вас есть представление о том, как это работает, все в ваших руках.
-
1 балл
-
1 баллБОЛЬШОЕ СПАСИБО!!! Первый раз воспользовался гарант сервисом и очень переживал, деньги то не малые перевел!!, но все прошло качественно и теперь у меня есть ВЫСШЕЕ образование !
-
1 баллБЕСПЛАТНАЯ РАЗДАЧА КУРСОВ 1=> бесплатный курс ( заработок на приложениях) http://filetowmr.ru/8644382201 2=> новый мануал по заработку на кино подписках. Всё подробно и пошагово описано, со скринами. http://filetowmr.ru/6552883733 только это не для ленивых.
-
1 баллHа проверку Bingo пожалуйста предоставьте!
-
1 баллШантаж всегда канает))))),ну больше нравиться ловить дрочунов)))они всегда бабос платят,причем не малый.
-
1 баллБанальная тема на предоплате.Люди сейчас не такие лохи пошли,все уже знают что сначало товар потом деньги
-
1 баллНе знаю как шопфанс, но у меня посредник снимал минидеп. Выбирал оплату в рублях, минидеп приходит в рублях, а на посреднике просят ввести в центах ( так и не смог перевести). Пришлось покупать QVV в $, выбрал оплату в $ и миник сняли в $.
-
1 балл
-
1 балл
-
1 балл
-
1 баллПро интернет-банкинг я тоже знаю. Я вообще про банк хотел расспросить. Слышал, что они начали выпускать карту для расчетов в интернете. Может Вы в курсе.
-
1 баллНу, если кто-то пострадает из-за некачественной продукции, то будет и расследование, я думаю Хотя у нас в России не всегда дело доводят до конца Обычно поругаются-поругаются, и забывают
-
1 балл
-
1 балл
-
1 балл
-
1 баллМои самые любимые это "Отпетые мошенники" (1988 года) "Поймай меня, если сможешь" "12 стульев" кто еще что может посоветовать к просмотру? :idea:
-
1 балл
-
1 баллодни остряки! Умных было бы столько же. Нет предложений....не обращайтесь!!!
-
1 балл
-
1 балл
-
1 баллВ китайской автономии Гонконг судят женщину, которая обвиняется в жестоком обращении с несовершеннолетней дочерью и в соучастии в ее изнасиловании. Мать заставила потерпевшую восстановить девственную плеву, чтобы удовлетворить фантазии своего мужа-педофила. В жутком преступлении подозревается 39-летняя женщина, воспитывающая 17-летнюю дочь от первого брака, пишет What`s On Xiamen. Родители потерпевшей расстались, когда ей исполнилось всего 7 лет. После этого женщина вновь вышла замуж за другого мужчину и осуществляла все его сексуальные фантазии. Родительницу не остановило даже то, что однажды 37-летний супруг потребовал от нее согласия на сексуальное надругательство над собственной дочерью. Более того, извращенец хотел непременно лишить падчерицу девственности. Однако его супруга выяснила, что дочь уже встречается с молодым человеком и у нее был половой контакт. Возмущенная этим родительница отправила девушку в клинику, где ей провели в мае 2010 года операцию по восстановлению девственной плевы. Чтобы сделать дочь сговорчивей, женщина пообещала отрезать ей пальцы, если она откажется пройти эту процедуру. Родители девушки хладнокровно планировали изнасилование, пожелав устроить из этого чуть ли не "семейный праздник". Подсудимая собиралась поехать всей семьей в отпуск на курорт острова Чеунг-Чау, где и должны были осуществиться все желания ее мужа. Однако педофил не хотел ждать и надругался над дочерью еще до намеченной туристической поездки. Добавим, что обвиняемая и до эпизода с изнасилованием заставляла свою дочь позировать в голом виде перед отчимом. После надругательства девушка, по совету своего бойфренда и социального работника, обратилась в полицию, где завели уголовное дело на ее родителей. Между тем адвокат родителей-педофилов утверждает, что дело сфабриковано, а показаниям девочки верить нельзя. По его словам, потерпевшая просто оговорила отчима, поскольку он якобы отказался купить ей ноутбук. Подмосковный коммунист заставил жену изнасиловать дочь В прошлом месяце Мособлсуд вынес приговор 38-летнему сексуальному извращенцу Владимиру Володину, который тоже обыгрывал свои изощренные фантазии на домочадцах. Как следует из материалов дела, Володин стал жить под одной крышей со своими жертвами, когда его падчерице исполнилось два года. А через семь лет отчим стал ее домогаться. Вскоре извращенец принялся регулярно насиловать девочку втайне от ее матери. Так продолжалось пять лет, пока Володин сам не проговорился о содеянном гражданской жене. Однако супруга даже не стала обращаться в милицию, поскольку была уверена в безнаказанности семейного тирана. Женщина побаивалась мужа, так как предусмотрительный насильник представал перед ней в образе VIP-персоны: он рассказывал жертве о своих связях в правоохранительных органах, "козырял" членством в Коммунистической партии Российской Федерации и сочинял небылицы про обладание правовым иммунитетом. Ко всему прочему, российский коммунист Володин отличался взрывным и непредсказуемым характером. Однажды он с ножом в руках заставил супругу вступить в интимные отношения с дочерью, а в дальнейшем насиловал уже обеих родственниц. Год назад супруга педофила все-таки решилась обратиться в милицию за помощью. Развратного коммуниста задержали и отдали под суд. В итоге Владимира Володина приговорили к 15 годам лишения свободы с отбыванием наказания в исправительной колонии строгого режима.
-
1 баллПолиция Колумбии поймала голубя, который транспортировал наркотики. Из-за слишком тяжёлого груза голубь приземлился недалеко от тюрьмы, и был пойман полицейскими. Согласно полицейским, голубь попытался доставить 45 грамм марихуаны в тюрьму на северо-востоке Колумбии. Однако задача оказалась для него слишком тяжёлой – из-за большого веса голубю было тяжело лететь. Голубь был пойман двумя полицейскими рядом с тюрьмой, в которую ему предстояло доставить наркотики. Полицейские сказали, что увидели голубя, который махал крыльями и пытался взлететь. К нему был прицеплен белый мешочек. Колумбийские наркоторговцы уже не в первый раз используют птиц в своих целях – не так давно, полиция задержала попугая, которого наркоторговцы использовали в качестве сторожа. «Преступники становятся всё умнее и умнее» - сказал начальник полиции города Букараманга, генерал Жозе Анжел Мендоса (Jose Angel Mendoza). «Они хотели доставить наркотики в тюрьму Букараманга, используя почтовых голубей. Сотрудники полиции нашли птицу рядом с тюрьмой. Она почти выполнила свою миссию, но из-за тяжёлого груза, не смогла долететь до тюрьмы».
