0

In my app. When user click on registration in safari browser I am returning to app. In app I am getting url: myApp://?email=pjayesh999@gmail.com

I want to fetch value of email from this url. How to do that.?

I have done this but this is giving me error that no key value email found:

NSString *str=[url valueForKey:@"email"];
vivek bhoraniya
  • 1,526
  • 2
  • 17
  • 36
  • 1
    See following link, probably you will find answer [there][1] [1]: http://stackoverflow.com/questions/2225814/nsurl-pull-out-a-single-value-for-a-key-in-a-parameter-string – Ievgenii Dec 24 '13 at 07:28

3 Answers3

1
URLParser *parser = [[[URLParser alloc] initWithURLString:@"myApp://?email=pjayesh999@gmail.com"] autorelease];
NSString *emailVal = [parser valueForVariable:@"email"];

Use NSScanner class given below
URLParser.h

@interface URLParser : NSObject {
NSArray *variables;
}

@property (nonatomic, retain) NSArray *variables;

- (id)initWithURLString:(NSString *)url;
- (NSString *)valueForVariable:(NSString *)varName;

@end

URLParser.m

@implementation URLParser
@synthesize variables;

- (id) initWithURLString:(NSString *)url{
self = [super init];
if (self != nil) {
    NSString *string = url;
    NSScanner *scanner = [NSScanner scannerWithString:string];
    [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"&?"]];
    NSString *tempString;
    NSMutableArray *vars = [NSMutableArray new];
    [scanner scanUpToString:@"?" intoString:nil];       //ignore the beginning of the string and skip to the vars
    while ([scanner scanUpToString:@"&" intoString:&tempString]) {
        [vars addObject:[tempString copy]];
    }
    self.variables = vars;
    [vars release];
}
return self;
}

- (NSString *)valueForVariable:(NSString *)varName {
for (NSString *var in self.variables) {
    if ([var length] > [varName length]+1 && [[var substringWithRange:NSMakeRange(0, [varName length]+1)] isEqualToString:[varName stringByAppendingString:@"="]]) {
        NSString *varValue = [var substringFromIndex:[varName length]+1];
        return varValue;
    }
}
return nil;
}

- (void) dealloc{
self.variables = nil;
[super dealloc];
}

@end

Check this Answer

NSURL pull out a single value for a key in a parameter string

This is what you actually required.

All the best

Community
  • 1
  • 1
Warrior
  • 39,156
  • 44
  • 139
  • 214
0

Try with URL.query,

NSString *str=url.query;

Where Url is object of NSUrl.

Toseef Khilji
  • 17,192
  • 12
  • 80
  • 121
0

You can also use following code.

NSString *strComplete = @"myApp://?email=pjayesh999@gmail.com";

NSArray *array = [strComplete componentsSeparatedByString:@"?"];

NSLog(@"%@",array);
NSString *strSecond = [array objectAtIndex:1];
NSLog(@"%@",strSecond);

Try this if it helps to you.

Maul
  • 1,179
  • 6
  • 13