Изменение идентификатора пакета для Firebase

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

В настоящее время мой идентификатор пакета mycompany.myProject, но я хочу, чтобы он был com.mycompany.myproject. У меня нет проблем с переключением на желаемый идентификатор пакета для архивирования приложения и загрузки в магазин приложений.

Шаги, которые я предпринял, чтобы переключить приложение на соответствующий идентификатор пакета:

  1. Создайте новое приложение в консоли firebase с правильным идентификатором пакета.
  2. Загрузите Google-Info.plist этого нового приложения, поместите его в корень проекта и перетащите в проект Xcode.
  3. Изменить идентификатор пакета на Facebook
  4. Изменить идентификатор пакета в настройках проекта

Однако приложение выдает фатальный сбой с этой ошибкой.

*** Terminating app due to uncaught exception 'InvalidPathValidation', reason: '(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''

Эта ошибка возникает при вызове метода Firebase.

- (NSString *) getUid {
return [FIRAuth auth].currentUser.uid;
}

Этот метод возвращает nil, который передает метод для получения данных из Firebase. Возврат nil этого метода вызывает ошибку InvalidPathValidation.

Я аутентифицируюсь через Facebook. Я подумал, что, возможно, причина, по которой это возвращается nil, заключается в том, что приложение не знает, кто вошел в систему, потому что мне никогда не предлагалось войти в систему (мое приложение проверяет, вошли ли вы через Facebook в viewWillAppear при открытии ViewController). Однако это не имеет смысла, потому что единственное изменение, которое я внес, - это изменение идентификатора пакета. Я застрял на этой проблеме почти неделю.

Мне особенно интересно, что мне нужно изменить, чтобы Firebase приняла изменения идентификатора пакета.


person Kyle Griffith    schedule 03.10.2016    source источник
comment
Вы удалили старый GoogleService-Info.plist? Просто хочу убедиться, что там нет двух, и что это не тот.   -  person Ian Barber    schedule 04.10.2016
comment
Я заменил старый GoogleService-Info.plist на обновленный. В моем корне только один файл.   -  person Kyle Griffith    schedule 04.10.2016


Ответы (2)


Решением было создать новое приложение в том же проекте Firebase.

person Kyle Griffith    schedule 29.12.2016
comment
вау, неужели нет возможности изменить идентификатор пакета в Firebase? - person Phil_Ken_Sebben; 13.01.2017
comment
На самом деле нет Фила. Вы можете добавлять разные проекты в один и тот же проект, который по какой-то причине не работал над этим проектом. Однако позже, выполнив другой проект, я смог добавить несколько приложений в один и тот же проект, без проблем. - person Kyle Griffith; 13.01.2017
comment
Как сказал @KyleGriffith в своем комментарии, я смог решить проблему, создав новое приложение в том же проекте. Мне пришлось заменить файл GoogleService и обновить информацию для отчета о сбоях (создать и загрузить новый файл JSON с отчетом о сбоях и обновить этап сборки, чтобы он ссылался на новый файл и новый идентификатор GoogleService Id). - person Ryan; 03.05.2017
comment
Просто выберите метод APN и вместо этого создайте файл .p8. Намного проще. - person Grant; 27.07.2018
comment
Да, это действительно отстой. По-прежнему не удается обновить идентификатор пакета без создания нового приложения ???? - person Zorayr; 07.05.2020

Приведенный выше ответ мог быть правильным на момент публикации, но мне помогло изменение идентификатора пакета в настройках подписи и возможностей цели. Затем я перешел к файлу GoogleService-Info.plist и изменил значение для BUNDLE_ID. Затем я нажал Command +B, чтобы создать приложение, и запустил его. У меня все сработало отлично, и я не получал никаких ошибок.

person Todd    schedule 17.06.2020
comment
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением. - Из отзыва - person 827; 30.06.2020
comment
@ 827 Я не критикую и не прошу разъяснений. Я просто даю ответ, так как обнаружил, что принятый вариант не стоит создавать новый проект Firebase только для изменения идентификатора пакета. Пожалуйста, прочтите внимательно. - person Todd; 30.06.2020
comment
В некоторых случаях это может сработать, но во многих других этого будет недостаточно, например при использовании Firebase Auth. Это не отвечает на вопрос. - person Nikolay Suvandzhiev; 23.12.2020
comment
@NikolaySuvandzhiev Это работает во всех случаях. Фактически, я сам использовал эту технику, когда пытался исправить некоторые проблемы с OAuth. Это действительно ответ на вопрос. - person Todd; 23.12.2020
comment
Когда вы выполняете предложенные шаги, установлен ли новый идентификатор пакета в настройках проекта консоли Firebase? Для меня это не так. В результате Firebase Auth с входом через Apple не работала. И в любом случае не забывать менять GoogleService-Info.plist. Правильный способ - создать новое приложение в том же проекте, что и в другом ответе. - person Nikolay Suvandzhiev; 24.12.2020
comment
@NikolaySuvandzhiev В таком случае, возможно, вы делаете это неправильно. Вход через Apple и Microsoft OAuth были причинами, по которым мне нужно было изменить идентификатор пакета, и мое решение работало для меня правильно. Мне удавалось получать один и тот же результат несколько раз. - person Todd; 24.12.2020