Question

How I can set homepage for Safari, Chrome, Opera and Firefox browsers in OSX with Objective-C?

Était-ce utile?

La solution

Before set HomePage for all browsers you need to close particular browser.

In safari you can do following way.

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"]);

For 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

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

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

CHEERS !!! :) :)

Autres conseils

For safari, you're going to want to change the "HomePage" string in com.apple.safari.plist, you can find it in ~/Library/Preferences.

There's some good documentation on how to edit these .plist files here: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top