Если вы хотите программно редактировать файл 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
, который, как ваше приложение будет работать в нормальном режиме. Таким образом, один из способов обойти это - предоставить привилегии для вашего приложения. See here for how to do that.
После того, как вы используете этот код и предоставите свои права доступа к корню, все равно может понадобиться respring, прежде чем вы узнаете, что ваша настраиваемая схема URL признана. У меня не было времени проверить эту часть.