【问题标题】:How to set Homepage in safari, Chrome, Opera, Firefox in mac browser in objective C如何在目标C的mac浏览器中设置Safari,Chrome,Opera,Firefox中的主页
【发布时间】:2014-01-06 15:30:02
【问题描述】:

如何在 OSX 中使用 Objective-C 为 Safari、Chrome、Opera 和 Firefox 浏览器设置主页?

【问题讨论】:

    标签: objective-c macos google-chrome safari opera


    【解决方案1】:

    在为所有浏览器设置主页之前,您需要关闭特定浏览器。

    在 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
    

    干杯!!! :) :)

    【讨论】:

    • 当我设置谷歌浏览器主页时。整个文件都损坏了所有设置为 chrome 丢失。请立即更新或删除 Chrome 的恶意代码。 @python
    【解决方案2】:

    对于 safari,您需要更改 com.apple.safari.plist 中的“HomePage”字符串,您可以在 ~/Library/Preferences 中找到它。

    这里有一些关于如何编辑这些 .plist 文件的好文档:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html

    【讨论】:

    • 能否提供有关如何更改 com.apple.safari.plist 中的字符串的相关代码?
    • 我尝试了下面的代码工作,但 safari 退出并再次打开它的值更改为前一个。 NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Library/Preferences/com.apple.Safari.plist"]; NSMutableDictionary *plistDict = [NSMutableDictionary dictionaryWithContentsOfFile:path]; [plistDict setValue:@"news.google.co.in"forKey:@"HomePage"]; [plistDict writeToFile:path atomically: YES];
    猜你喜欢
    • 2012-04-08
    • 2022-12-24
    • 2014-02-20
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多