【发布时间】:2014-01-06 15:30:02
【问题描述】:
如何在 OSX 中使用 Objective-C 为 Safari、Chrome、Opera 和 Firefox 浏览器设置主页?
【问题讨论】:
标签: objective-c macos google-chrome safari opera
如何在 OSX 中使用 Objective-C 为 Safari、Chrome、Opera 和 Firefox 浏览器设置主页?
【问题讨论】:
标签: objective-c macos google-chrome safari opera
在为所有浏览器设置主页之前,您需要关闭特定浏览器。
在 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"]);
对于铬
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
对于火狐
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
对于歌剧
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
干杯!!! :) :)
【讨论】:
对于 safari,您需要更改 com.apple.safari.plist 中的“HomePage”字符串,您可以在 ~/Library/Preferences 中找到它。
这里有一些关于如何编辑这些 .plist 文件的好文档:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html
【讨论】: