Редактировать Info.plist программно в приложении с распакованным приложением

Как я могу отредактировать файл Info.plist в jailbroken приложении, которое я пишу? Я знаю, что это обычно невозможно, но учитывая тот факт, что это будет выпущено в Cydia, я чувствую, что должен быть способ. Я не разбираюсь в модификациях файлов в jailbroken среде, поэтому любая информация оценивается.

Причина, по которой я хочу отредактировать файл Info.plist, – это программно зарегистрировать схему URL. Поэтому, если есть альтернативный способ добиться этого, я бы хотел его услышать 🙂

2 Solutions collect form web for “Редактировать Info.plist программно в приложении с распакованным приложением”

Если вы хотите программно отредактировать файл Info.plist своего собственного приложения при его запуске, вы можете использовать этот код:

- (BOOL) registerForScheme: (NSString*) scheme { NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"]; NSMutableDictionary* plist = [NSMutableDictionary dictionaryWithContentsOfFile: plistPath]; NSDictionary* urlType = [NSDictionary dictionaryWithObjectsAndKeys: @"com.mycompany.myscheme", @"CFBundleURLName", [NSArray arrayWithObject: scheme], @"CFBundleURLSchemes", nil]; [plist setObject: [NSArray arrayWithObject: urlType] forKey: @"CFBundleURLTypes"]; return [plist writeToFile: plistPath atomically: YES]; } 

и если вы называете это так:

 BOOL succeeded = [self registerForScheme: @"stack"]; 

то ваше приложение может быть открыто с такими URL-адресами:

 stack://overflow 

Однако, если вы посмотрите на права доступа Info.plist:

 -rw-r--r-- 1 root wheel 1167 Oct 26 02:17 Info.plist 

Вы видите, что вы не можете писать в этот файл как пользовательский mobile , так как ваше приложение будет работать нормально. Таким образом, один из способов обойти это – предоставить привилегии для вашего приложения. См. Здесь, как это сделать .

После того, как вы используете этот код и предоставите свои привилегии для root, все равно может потребоваться перезапись, прежде чем вы узнаете, что ваша настраиваемая схема URL признана. У меня не было времени проверить эту часть.

Вот как я решил это для Facebook SDK в Swift

 var appid: NSMutableDictionary = ["FacebookAppID": "123456789"] var plistPath = NSBundle.mainBundle().pathForResource("Info", ofType: "plist") appid.writeToFile(plistPath!, atomically: true) var appName: NSMutableDictionary = ["FacebookDisplayName": "AppName-Test"] appName.writeToFile(plistPath!, atomically: true) var urlStuff = NSMutableDictionary(contentsOfFile: plistPath!) var urlType = NSDictionary(objectsAndKeys: "com.appprefix.AppName", "CFBundleURLName", NSArray(object: "fb123456789"), "CFBundleURLSchemes") urlStuff?.setObject(NSArray(object: urlType), forKey: "CFBundleURLTypes") urlStuff?.writeToFile(plistPath!, atomically: true) 
  • iOS - открытая команда Cydia и ее коллега?
  • Преобразование проекта xcode в iOSOpenDev
  • Запустить приложение «как услугу» на iOS / Cydia
  • Как отображать значок пакета / приложения при просмотре Cydia repo
  • Как правильно использовать SharedInstance в Cydia Tweak?
  • Как я могу отслеживать вызовы API приложения на jailbroken iOS-устройстве?
  • как защитить приложение iOS от взлома?
  • Запуск приложения при получении текстового сообщения с помощью настройки theos
  • Как установить / активный syslogd на iPhone / iPad
  • Пакет Debian: rm-файл при удалении, но не обновление
  • Идентификатор, используемый для подписи исполняемого файла, более недействителен <= help me
  • Interesting Posts

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

    Прикосновение при запуске на iOS

    nativescript как сделать элемент прозрачным для сенсорных событий

    Знайте, прокручивается ли UICollectionView

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

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

    Невозможно поместить карты Google GMSMapView в подзаголовок основного основного вида?

    Где я должен выполнить проверку доступности?

    Что делает фаза сборки «Fabric.framework / run» на самом деле?

    Swift: результат всегда возвращает nil, пока я получаю данные из Facebook с помощью FBSDK 4.x

    Вызов статического метода из NSTimer. Является ли это возможным?

    Отмена MFMailComposeViewController вызывает утечку памяти?

    Ссылки Пользователи Firebase в базе данных с изображениями в Firebase Storage Swift

    Общий секрет, основанный на эллиптической кривой Диффи-Хеллман с CommonCrypto

    Анимация подвью в интерактивном переходе от UITableView к UIView

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.