如何使用Objective-C在OSX中为Safari,Chrome,Opera和Firefox浏览器设置主页?
在为所有浏览器设置HomePage之前,您需要关闭特定的浏览器。
在safari中,您可以采取以下方式。
NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/com.apple.Safari.plist"];
NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithContentsOfFile:path];
NSLog(@"Old HomePage %@",[plistDict objectForKey:@"HomePage"]);
[plistDict setValue:@"https://google.co.in/" forKey:@"HomePage"];
[plistDict writeToFile:path atomically: YES];
NSLog(@"New HomePage %@",[plistDict objectForKey:@"HomePage"]);
对于CHROME
NSError * error;
NSString * stringFromFile;
NSString * stringFilepath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Application Support/Google/Chrome/Default/Preferences/"];
stringFromFile = [[NSString alloc] initWithContentsOfFile:stringFilepath
encoding:NSUTF8StringEncoding
error:&error];
NSLog(@"stringFromFile %@ error %@",stringFromFile, error.description);
NSArray *lines = [stringFromFile componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (NSString *line in lines) {
if ([line rangeOfString:@"\"homepage\":"].location != NSNotFound) {
NSLog(@"string contains homepage!");
NSString *temp =@"\"homepage\": \"https://yahoo.com\",";
NSString *replacedString = [stringFromFile stringByReplacingOccurrencesOfString:line
withString:temp];
[replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}//ends if
}//ends for
对于Firefox
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Application Support/Firefox/Profiles"];
NSString *firefoxPath;
NSArray *folderItems = [self listFilesAtPath:path];
for (NSURL *item in folderItems) {
NSNumber *isHidden = nil;
[item getResourceValue:&isHidden forKey:NSURLIsDirectoryKey error:nil];
if ([isHidden boolValue]) {
firefoxPath =[NSString stringWithFormat:@"%@/%@/prefs.js",path,[item.path lastPathComponent]];
}
}
NSError * error;
NSString * stringFromFile;
NSLog(@"firefox %@",firefoxPath);
stringFromFile = [[NSString alloc] initWithContentsOfFile:firefoxPath
encoding:NSUTF8StringEncoding
error:&error];
NSArray *lines = [stringFromFile componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (NSString *line in lines) {
if ([line rangeOfString:@"user_pref(\"browser.startup.homepage\""].location != NSNotFound) {
NSString *temp = [NSString stringWithFormat:@"user_pref(\"browser.startup.homepage\", \"%@\");",homePageURL];
NSString *replacedString = [stringFromFile stringByReplacingOccurrencesOfString:line
withString:temp];
[replacedString writeToFile:firefoxPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}//ends if
}//ends for
对于Opera
NSError * error;
NSString * stringFilepath = [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Application Support/com.operasoftware.Opera/Preferences/"];
NSString *stringFromFile = [[NSString alloc] initWithContentsOfFile:stringFilepath
encoding:NSUTF8StringEncoding
error:&error];
NSArray *lines = [stringFromFile componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (NSString *line in lines) {
if ([line rangeOfString:@"\"urls_to_restore_on_startup\":"].location != NSNotFound) {
NSString *temp = [NSString stringWithFormat:@"\"urls_to_restore_on_startup\": [ \"%@\" ]",homePageURL];
NSString *replacedString = [stringFromFile stringByReplacingOccurrencesOfString:line
withString:temp];
[replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:nil];
}//ends if
}//ends for
CH !!! !!! :) :)
对于safari,您将要更改com.apple.safari.plist中的“HomePage”字符串,您可以在〜/ Library / Preferences中找到它。
这里有一些关于如何编辑这些.plist文件的好文档:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html