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

У меня есть проект, и этот проект поддерживает два языка: английский и испанский.

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

Во-вторых, у нас есть веб-сайт, и этот веб-сайт предоставляет поддержку на испанском и английском языках. Пользователь может зарегистрироваться (зарегистрироваться) или войти (войти) с английского или испанского сайта.

Мой вопрос: как пользователь, если я решу зарегистрироваться через сайт на испанском языке, мне нужно перейти в приложение на испанском, а не на английском языке.

Как я могу это сделать? Универсальная ссылка или Deep Link. Кто-нибудь раньше строил этот цикл?

2 ответа

Используйте Branch iOS SDK для глубоких ссылок, чтобы вы могли гарантировать, что пользователь получит язык, даже если у него не было предварительно установлено приложение. В ваших ссылках вы должны быть в состоянии установить поле language в english, epanishи т. д. Когда пользователь открывает ваше приложение, вы можете просто извлечь эту информацию из обратного вызова Branch следующим образом.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
  // listener for Branch Deep Link data
  Branch.getInstance().initSession(launchOptions: launchOptions) { (params, error) in
      // do stuff with deep link data (nav to page, display content, etc)
      print(params as? [String: AnyObject] ?? {})
      let language = params?['language']
      //Store this in their NSUserDefaults
      let defaults = UserDefaults.standard.set(language, forKey: "language")
  }
  return true
}

Информация в ваших UserDefaults будет сохраняться до тех пор, пока пользователь не удалит приложение и не переустановит его.

let language = UserDefaults.standard.string(forKey: 'language')

Вы не можете изменить язык устройства из приложения.

Решением для вашего варианта использования может быть ручная локализация в вашем проекте: вместо того, чтобы полагаться на NSLocalizedString вам придется использовать свою собственную функцию для обеспечения локализации для данной строки / ключа. В "нормальном" сценарии использования вы бы использовали предпочтительный язык системы; при открытии приложения по ссылке вы добавляете язык в качестве параметра URL и используете этот язык для сеанса приложения. (Обратите внимание, что это не будет работать с локализацией Storyboard или Info.plist, только с текстами, которые вы явно указали в коде).

Другие вопросы по тегам