views:

100

answers:

2

Hi,

I have successfuly added my own url schemes to my App. The App correctly launches using the schemes.

Now I want to handle the incoming data but the delegate is not called. It is an universal app and I have added the following function to both AppDelegates:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if (!url) {  return NO; }

    NSString *URLString = [url absoluteString];
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:NSLocalizedString(@"test message", nil) 
                          message:URLString
                          delegate:self 
                          cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];     
    [alert release];
    return YES;
}

I am testing with a schema like: myapp://appalarm.com …and would expect to be appalarm.com in the URLString

What is wrong with it?

Thanks for your responses!

+2  A: 

If your application delegate has implemented 'applicationDidFinishLaunchingWithOptions:' then the 'handleOpenURL:' method will never be called. Look at the options passed in through the other method to determine how your app was launched and what behavior you should implement.

Ashley Clark
thanks! the url is also contained in the launchOptions in the key UIApplicationLaunchOptionsURLKey
favo
A: 

I tried to clarify in another post. The answer of Ashley Clark is only partly correct. Under OS 4.0 the handleOpenURL gets called (at least for file URLs) and you have to implement it to handle open url calls for when the app is in background. Thus, opening the file in both methods may open it twice (if applicationDidFinishLaunchingWithOptions returned YES, which it should). See another post.

Christian Fries