#ios #swift #api
#iOS #swift #API
Вопрос:
В настоящее время я разрабатываю приложение и пытаюсь добавить кнопку, которая откроет другое приложение, установленное на моем телефоне, при нажатии кнопки
Я пытался найти схему URL для приложения, но не могу ее найти. Единственное, что я могу найти, это идентификатор пакета. Итак, я подумал, может быть, есть способ использовать идентификатор пакета для открытия приложения через частные API в Swift? Мой телефон взломан, если это поможет. Ниже приведен мой код
@IBAction func openAppTapped(_ sender: Any) {
UIApplication.shared.openURL(NSURL(string: "itms-apps://itunes.apple.com/us/app/apspace/id1413678891?mt=8")! as URL)
}
Мне удалось запустить приложение в appstore при нажатии на кнопку, но я хочу, чтобы способ открыть приложение напрямую, не используя схемы URL, а вместо этого используя идентификатор пакета и / или частные API. Любая помощь была бы очень признательна!
Ответ №1:
Чтобы открыть другое приложение, вам либо придется использовать какое-то расширение, предоставляемое этим приложением, либо выяснить их схему URL и перепроектировать ее.
Первое, что вы могли бы попробовать, это просмотреть Info.plist приложения и посмотреть, определили ли они схему URL для своего приложения. Если нет, и они не внедрили расширение, то я думаю, что вы SOL.
Если они определили его, попробуйте использовать его для открытия своего приложения и посмотрите, что произойдет, у них может быть какой-то код, который отклоняет или принимает запрос на открытие их приложения на основе формата URL после их схемы. Если вы не можете понять это методом проб и ошибок, вы можете использовать тот факт, что ваш телефон взломан, чтобы декомпилировать их приложение и найти логику синтаксического анализа URL, которая, вероятно, находится в их AppDelegate. Оттуда вы можете попытаться создать URL-адрес, который вы можете использовать для успешного открытия своего приложения каждый раз.
Комментарии:
1. Как я уже упоминал в своем посте, в приложении нет схемы URL, поэтому я пытаюсь найти способ открыть его с помощью идентификатора пакета, потому что, по-видимому, есть способ сделать это с помощью частных API
2. Извините, я подумал, что, когда вы сказали «… Я не могу его найти …» вы имели в виду, что не знали, где искать. Если схемы URL нет, то невозможно открыть другое приложение в производственной среде без использования сумасшедшего взлома, такого как импорт XCTest, импорт частных заголовков из XCUIApplication, а затем использовать их для открытия другого приложения по идентификатору пакета.
3. Я думаю, что есть способ сделать это, импортировав файл заголовка LSApplicationWorkspace, но опять же этот файл заголовка находится в Objective C, и я не уверен, как импортировать его в Swift. Я мог бы использовать что-то вроде
openApplicationWithBundleID:(id)arg1