Отключение сотовых данных одного приложения непреднамеренно отключает другие приложения?

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

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

Повторим еще раз: каждое приложение, естественно, имеет свой собственный идентификатор пакета, так почему отключение сотовых данных для одного приложения может привести к его сбою для других брендов?

Как выглядит экран «Сотовые данные»? Другие приложения все еще включены?
@ 0942v8653 Да, достаточно отключить один, чтобы повлиять на них всех, даже если все они отображаются включенными на экране сотовой связи.
@chaiguy Я посмотрю на это для тебя. Я проверю несколько разных значений в CellularUsage.dbбазе данных с приложениями той же компании и другими вещами. О, и у вас есть какие-нибудь конкретные примеры, на которых я мог бы проверить?
@AndrewLarsson Это было бы здорово, я очень ценю это. Я посмотрю, смогу ли я создать несколько демо-приложений, которые демонстрируют проблему!
Будущая ссылка - этот вопрос, вероятно, лучше задать на StackOverflow, так как этот сайт предназначен для вопросов пользователей, а не вопросов разработчиков.

Ответы (1)

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

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

Насколько я могу судить, это просто ошибка в реализации этой функции на iOS, и я не могу придумать никакого способа обойти это, кроме полного изменения того, как мы брендируем наши приложения. Я отправил отчет об ошибке в Apple.