Search
Write a publication
Pull to refresh

Comments 76

Особенно будет интересно когда эти вызовы идут из какой-то библиотеки, которая используется в приложении. Ещё хорошо в случае с библиотеками с открытым кодом, но если это чёрный ящик или кода реально много, то будет интересно.

Бред сивой кобылы. Как работать приложению, если оно ничего не знает о системе? Понятно, что шпионить нехорошо, и сливать все файлы пользователя к себе на сервера — это неприемлемое поведение, но запретить определение количества свободного места... А если надо что-то скачать? Качать, на половине упереться в нехватку места, словить эксепшн, повторить до бесконечности?

Используйте новую функцию willMyFileFitOntoTheStorage? :)

А перед этим надо будет вызывать новую функцию «CanIUseThewillMyFileFitOntoTheStorageFunction»? :-)

Создать файл, задать ему размер, потом только скачивать в зарезервированное пространство?

Раз уж вы знаете размер файла

Ну и кстати говоря не так много софта вообще парится с этим, навскидку только стим(проверка на размер и похоже резерв) и торрент(там резерв)

А перед этим сделать запрос на сервер, чтобы узнать размер файла? Такие вещи, как основная информация о системе, всегда были доступны всем приложениям на всех платформах. А теперь «Apple» решила повыеживаться и начала требовать особого разрешения от каких-то модераторов... Посмотрим, во что это выльется. Сколько там приложений в сторе? Сколько времени потребуется на модерацию?..

Если вы не знаете сколько вам надо, тогда зачем вам свободное?

Например, чтобы дать пользователю возможность качать файлы из списка. Пример: офф-лайновый навигатор с картами. Знаем свободное место и предлагаем качать только те карты, которые поместятся на устройство.

Это тот случай когда не сложно объяснить модераторам будет (даже с картинками).

Правда резерв все равно лучше делать, тогда не будет проблемы с тем что место кончилось в процессе.

Тут можно переформулировать: а почему я должен кому-то что-то объяснять и доказывать? Не я, а «Apple» должна быть заинтересована в том, чтобы мои приложения работали на их девайсах, потому что без приложений их телефон — кусок дорогущего никому не нужному г...а.

UFO landed and left these words here

Как и приложение без пользователей?

Да, как и приложение без пользователей. Только пользователи могут перейти на другую платформу, если приложения на старой не будут работать или их забанят. MS в свое время выпустила новую версию WinPhone, закрутила гайки. Писать под нее никто не стал, народ повалил на iOS и на Android.

Потому что вы больше заинтересованы в том, чтобы ваше приложение попало в АппСтор. Это же вы пришли к Эпплу с просьбой добавить свое приложение к ним, а не они - к вам.

В конце концов, если им понадобится какое-то приложение, они могут его разработать или купить. Может быть не так хорошо, как вы, но приложение будет. А вот вы свой смартфон не сделаете.

Вот это и есть главная гадость, которую успел сделать Джобс — создание сторов. :-(

предлагаем качать только те карты, которые поместятся на устройство.

Странный UX. Если мне нужна карта Австралии, но денег места хватает только на карту Гренландии + Мозамбик на сдачу - что делать?

Чистить устройство, когда вы увидите, что у нужной вам карты вместо кнопки скачивания надпись о недостатке места.

Читать окошко с предупреждением об отсутсвии места на диске и освобождать место

Честно писать, что не хватает места, и требовать освобдить столько-то мегабайт/гигабайт. А сколько именно — теперь не узнать.

А теперь «Apple» решила повыеживаться и начала требовать особого разрешения от каких-то модераторов... Посмотрим, во что это выльется.

составлять подробное эссе со ссылками на код, что за приложение, кому оно нужно, чем полезно, и почему без него никак нельзя обойтись?

Раз уж вы знаете размер файла

а размер свободного - нет. или действовать так - создавать пустой файл нужного размера, если не получилось, то и не скачивать?

Именно так, зарезервировать место, и скачивать именно в это место.

Тогда у вас в процессе тоже не возникнет проблемы что вдруг место кончилось

Если свой сервер — да, можно настроить. Но есть куча серверов, которые не говорят в заголовках, сколько весит файл. Сколько резервировать?

Только сколько вы собрались отмерять через свободное место?

Вы определитесь, у вам есть размер файлов или нет?

Давайте конкретно: у Вас есть свободное место и нет размера файла, который нужно скачать. Что вы собираетесь делать с информацией о свободном месте? Единственное, что мне приходит в голову – посылать количество свободного места на сервер, чтобы backend с этим разбираться, но это совершенно идиотская идея, а неидиотскую у меня не получается придумать, поможете?

Есть варианты.

  1. Узнав свободное место, сервер передает список файлов или пакетов файлов, отмечая в списке те, которые туда поместятся. Тогда приложение при попытке скачать файл из списка без такой пометки будет предлагать освободить место.

  2. Сервер отдаст для скачивания пакет с максимальным качеством (картинки, видео), который может поместиться (забей все свободное место).

Конечно, приложение может получить от сервера список всех вариантоа для скачивания с размерами, но, с другой стороны, а какая принципиальная разница, ароме утечки на сервер такой важной информации, как размер свободного места?

Конечно, приложение может получить от сервера список всех вариантоа для скачивания с размерами

Ну так и отдайте его сразу, а там пусть у клиента голова болит.

А что это даст клиенту? Клиент выбирает вариант (сам или пользователь), начинает качать, обламывается из-за недостатка места. Клиент выбирает другой вариант, снова качает, снова обламывается. Итог: нагрузка на сервер, нагрузка на сеть, посаженная батарейка.

Клиенту это даст (сюрприз) информацию о размере файла.

Если я знаю размер файла - я могу понять, смогу ли я скачать файл за приемлемое время через мобильную сеть и не потратить на него весь лимитированный трафик или лучше качать через Wi-Fi. Я могу прикинуть, поместится ли у меня вот эти два файла сразу или надо выбрать один. И так далее.

Когда мне сервер скажет "вот список файлов, каждый из которых тебе поместится" - я всего этого лишен, а никаких преимуществ не получаю.

Сколько резервировать?

Резервируйте 10 мб. Понадобится еще - зарезервируйте 20, 10 освободите.

Можете начать с любой константы, которая вам по душе ;) Хоть и с 1 байта. Главное, на каждой итерации удваивайте. Но, если, например, вы скачиваете картинки, начинать 1 байта будет странно.

Понял-принял. Главное – удваивать. Вечер в казино обещает быть интересным.

Главное – удваивать

Главное - правильно ставить задачу. Если хотите выделить память, но не знаете сколько - пилите аллокатор. Например вот такой, примитивный, но с O(log(N)) итераций внутри. Или, если бекенд ваш, договоритесь как то, что ли, насчет размера файла.

неизвестно, сколько весит файл, неизвестно, сколько есть свободного. думаю, что прикинуть размеры файла легче, чем оценить свободное место. скажем, отрывок из тт обычно 20-30М. обычно свободного - около 0. и тут только единственная ситуация "скачиваем, скачиваем, скачиваем... ой, не получилось".

м, а давайте приплюсуем говнокодеров джуниоров, которые вообще не рассчитывают на ситуацию, когда место закончилось (нуачо, кодят будто ресурсы машины бесконечны и выделены только Этому приложению), так вообще получаем ситуацию, когда приложение просто вылетает и делает систему неработоспособной (есть интересная фишка в андроид, что нехватка диска это примерно как нехватка памяти, запустить ничего даже непишущего на диск нельзя)

а впрочем, пожалуйста заминусуйте мой комментарий я не была права, сама никогда не проверяю свободное место, а проверяю только, можно ли создать пустой файл нужного размера, если размер известен, а если неизвестен - то тоже "ой, не получилось, места мало"

да, я говнокодер ленивая делать сразу хорошо

ситуацию, когда приложение просто вылетает и делает систему неработоспособной (

Приложение вылетает из аппстора, джуниор - из компании.

Таким образом можно бинарным поиском определить количество свободного места

Так а как же fingerprints? Если у вас будет 2 приложения, то они оба могут иметь разные аккаунты (даже если на самом деле этот тоже же самый пользователь). Но за счет косвенных вещей вы сможете определить, что этот тот же самый пользователь. Я думаю тут вопрос в Privacy, чтобы усложнить такие махинации.

Ну так и напишите в Эппл:

У меня приложение онлайн кинотеатра с возможностью оффлайн просмотра фильмов. Место нужно чтобы улучшить пользовательский сценарий скачки большого количества тяжелых файлов. Эппл вам легко окнет все файловая апишки.

А вот если у вас калькулятор или фонарик или три в ряд какой появляются вопросики. Причем не только у Эппла. Пользователю тоже интересно зачем вам работа с файлами вообще?

Если надо скачать - пусть приложение выдаёт окно "Для выполения данной операции необходимо загрузить дополнительный файл/карту/модуль/нужное подчеркнуть или дописать. Потребуется N мегабайт свободного места в бортовой памяти вашего телефона. Продолжить? Y/N". Как при установке программ на ПК.

Тенденция "мы все сделаем сами за вас, только дайте нам карт-бланш на использование вашего устройства, естественно, все для вашего удобства, чтобы вам не пришлось и пальцем шевельнуть, мамой клянусь" меня раздражает. Телефон стал умнее, стал компьютером, да. Но с какого перепугу он должен больше принадлежать фирме-производителю и разработчикам ПО, чем своему законному владельцу? Это моя вещь. Я ее купил и имею право знать, на что тратятся ее ресурсы. Поэтому хотя бы такие проблески прозрачности, на мой взгляд, уже хорошо. Естественно, эппл делает это не потому что они такие замечательные, белые и пушистые, но возможно появится тенденция.

Естественно, эппл делает это не потому что они такие замечательные, белые и пушистые, но возможно появится тенденция.

Они продают безопасность своим клиентам. И люди им за нее несут деньги. Только бабло, ничего личного.

Но на компьютере вы ещё меньше контролируете, что делают приложения. Разве что Linux поднимать с SeLinux настроенным параноидально - но это эпопея на месяцы, разбираться.

К сожалению, вы правы. Но я надеюсь, что когда-нибудь всем тем уродам, которые все никак не могут нажраться баблом с рекламы (все-таки основная цель сбора инфы что в телефонах, что на компьютере - это для рекламы) это самое бабло поперек горла встанет.

Я вот боюсь, что это будет долго. «Apple» уничтожила рынок ПО для телефонов. :-(

В прошлом году посадили 60 гектаров пшеницы. Усё пожрав хомяк. В этом году посадили 80 гектаров пшеницы. Усё пожрав хомяк. В следующем году посадим 100 гектаров! Нехай зараза подавытся!

Если надо скачать - пусть приложение выдаёт окно "Для выполения данной операции необходимо загрузить дополнительный файл/карту/модуль/нужное подчеркнуть или дописать. Потребуется N мегабайт свободного места в бортовой памяти вашего телефона. Продолжить? Y/N". Как при установке программ на ПК.

Вы с точностью до байта помните, сколько места сейчас свободно на Вашем телефоне? Явно нет, и никто не помнит. Поэтому все будут соглашаться, а потом у половины процесс встает. Умные инсталляторы на ПК такие вещи проверяют и просто не дают ничего поставить, пока не будет место.

Не запретить, а объяснить зачем используюте.

А почему разработчик должен что-то объяснять? И что ограничат дальше? Заставят объяснять, какие регистры процессора использует приложение и зачем?

А почему разработчик должен что-то объяснять?

Потому что разработчик хочет свое приложение опубликовать в App Store :) Если не нравятся его правила — можно в нем не публиковать.

По факту там в поддержке не очень умные люди сидят часто с синдромом вахтера и по надуманным причинам не пускают релиз в стор. А теперь у них не пускать причин становится еще больше.

Все просто. Не нравится - не делайте. Ведь просто, правда?

Пользователей просто задолбали, что в текущей ситуации программы (за которые они платят деньги, причем ровно столько, сколько назначил разработчик, не торгуясь!), воруют информацию, перс данные и прочая прочая.

Пользователей на планете несколько больше, чем разработчиков, поэтому этот беспредел, который некоторые молодые и ранние считают само собой разумеющимся, решили прикрыть. Более старшие товарищи ещё помнят времена, когда для работы каждого утюга и хеллоуворда не требовалось постоянное соединение с интернетом, и купленное ПО ничего никому не отправляло, а об единицах отправляющих писали в сетевых СМИ и были скандалы и потери репутации.

Резюме: пока яйца прикрутили на одной платформе. Надеюсь, что и гугл прикроет лавочку.

Все просто, не нравится не скачивайте приложение. А что гугл и эпл перестали следить за пользователями?

Вот приложение фонарика в Сторе. Оно точно только светит или еще что-то делает? Как пользователю это выяснить?

И вообще зачем каждому пользователю с этой ерундой разбираться? Пусть владелец Стора получающий кучу денег с пользователей сам разберется что там нормальное, а что не очень.

Закрытие АПИшек тем кому они не нужны это правильный путь. Если процесс одобрения будет нормальным, то нет никаких проблем.

Те кто не хочет писать под Айфоны могут не писать. Нет проблем. Рынок переполнен всякой ерундой. Это не проблема. А все большое хорошее без проблем получит нужные им разрешения и будет дальше спокойно зарабатывать.

Выяснить очень просто если пользоваться только открытым ПО, которого даже на платформе от Apple очень много. А если не пользуетесь открытым ПО каков шанс что вы при выборе ПО учтете абсолютно все кейсы когда разработчик может ваши данные "украсть"? Думаю что он не велик, даже при таком авторитарном подходе как у Apple. Я, к примеру всегда предпочту установить себе приложение с открытым кодом, чем какое-то неизвестное мне но даже с хорошими отзывами. И я могу себе это позволить сделать из любого источника, в отличие от.

Тогда не понимаю вашего возмущения "вахтёрами, не пускающими релиз в стор".
Пусть себе запрещают, а вы можете себе позволить ставить опен-сорс, да ещё наверняка собственноручно скомпилированный.

Это не возмущение, а констатация факта.
Я не пользуюсь потому что не нравится то как это работает ни со стороны разработчика, ни со стороны пользователя.

То есть, вы в этом процессе никак не замешаны, вы не понимаете, зачем это всё нужно и какая пользая от модерации, и вам со стороны кажется "сидит какой-то вахтёр, пущает-не пущает, по своему самодурству".


Ну а какая-то бабка на лавка также посмотрит со своей стороны на программистов и скажет "какие-то странные люди, сидят весь день, кнопки беспорядочно жмут, лучше бы пошли двор подмели, хоть какая польза была бы".

Ну почему же. Я имел опыт выкладывания приложений туда. Однако проблема-то как раз в том что иногда код библиотек содержит "подозрительные" с точки зрения Apple вызовы. У меня была немного другая ситуация: есть приложение, которое выкладывается стабильно раз в N недель. Ничего не меняется кроме инкремента версии, пару раз была обновлена картинка. И вдруг видимо в результате ручной проверки описание приложение перестало быть "подходящим" с точки зрения вахтеров Apple.
Ситуация крайне удручающая на самом деле, особенно учитывая их скорость ответов после того как они забраковали релиз.

Почему всегда оказывается что все кто говорит о несправедливых банах от Эппла занимался какой-то дичью?

Вы не пробовали не выкладывать пустые апдейты в публичный стор? Это логично, разумно и не вызывает бана.

Обновление не было пустым, я вроде бы такого не писал.

Вы это написали прямо дословно: «Ничего не менялось, кроме инкремента версии»

В описании - да, в коде менялось. Претензии были к описанию. Хотя это же описание было больше 40+ релизов подряд.

Код поменялся настолько что пора описание поправить. Или оно с самого начала было не очень и это упустили. Бывает.

Пользователей просто задолбали, что в текущей ситуации программы (за которые они платят деньги, причем ровно столько, сколько назначил разработчик, не торгуясь!), воруют информацию, перс данные и прочая прочая.

Давно ли это пользователи стали платить за мобильные приложения в эппловском сторе? «Apple» с самого начала начала форсить, что приложение должно стоить копейки, а еще лучше — быть бесплатным.

Но вот только Apple отчиталась, что прибыль с комиссии продаж в AppStore за 2022 год составила $20 млрд. Наверное, она это всё придумала, чтобы с пустого места заплатить огромные налоги?

Платежи внутри приложений и их комиссия. Не зря же Epic Games взбунтовались и не захотели ее платить.

Вопросов нет ни к чему, кроме UserDefaults. Их-то за что? Точнее, понятно, за что, но, во-первых, а часто ли приложения вообще не используют UserDefaults? Есть ли приложения, которым затруднительно будет объяснить, почему они пользуются UserDefaults? И я не очень понимаю, в чём смысл ограничения, ведь в них же, вроде как, только настройки уровня приложения, если я ничего не путаю? По крайней мере, я пользовался только настройками уровня приложения. В моём понимании оттуда не вытащить ничего, что ты туда сам не клал. Или есть что-то?

У меня возник тот же вопрос, я полез читать оригинал и вот что там написано:

User defaults APIs

The following API for accessing user defaults requires reasons for use. Use the string NSPrivacyAccessedAPICategoryUserDefaults as the value for the NSPrivacyAccessedAPIType key in your NSPrivacyAccessedAPITypes dictionary.

- NSUserDefaults

In your NSPrivacyAccessedAPITypeReasons array, supply the relevant values from the list below.

CA92.1

Declare this reason to access user defaults to read and write information that is only accessible to the app itself.

This reason does not permit reading information that was written by other apps or the system, or writing information that can be accessed by other apps.

Учитывая что там ровно одна опция, которая подразумевает ровно такое использвание как я и думал, то единственный логичный вариант который я могу предположить, что в будущем UserDefaults получит какие-то новые возможности

UserDefaults это не только настройки моего приложения, он так же может шарить настройки с другими приложениями, если они находятся в одной app group.

С одной стороны да. Но ведь мне никто не мешает положить файл в общее хранилище для синхронизации данных. Или keychain. Связать приложения в app group я всё равно смогу. По крайней мере, мне так видится.

А если я всё равно смогу, то это какой-то забор в чистом поле. Но замечание по моему комменту принимается)

Смысл в ограничении использования API не по назначению. Есть разница между приложением, опрашивающим только нужные ему API для настройки своих функций, и приложением, опрашивающим все доступные API, с целью получить уникальный слепок устройства, для возможности негласно следить за действиями его владельца без его согласия (и/или продавать эту информацию другим, что чаще всего и происходит).

Для использования по назначению и без назначения есть механизм разрешений. Надо доступ к GPS — поставил галочку, не надо — снял. Там, конечно, тоже далеко не идеальная реализация, и приложения с разработчиками чудят, но в целом все сделано.

Механизм разрешений для этого не подходит, т.к. API для разработчиков предоставляет им намного больше возможностей, чем есть в разрешениях. Что логично, т.к. не спрашивать же у пользователя, разрешать ли каждому приложению определять дату последнего изменения файла, громкость звука или доступные языки на клавиатуре. Чтобы пользователям не пришлось отвечать на несколько десятков вопросов, по каждому приложению, Apple берёт этот труд на себя.

Тем временем iOS предоставляет API, который позволяет Яндексу, Google и прочим знать ваш аккаунт в свежеустановленных приложениях, и вы никак не удалить эти данные, не сбросив устройство к заводским настройкам. Privacy.

Sign up to leave a comment.

Other news