2017-07-24 1046 views
1

我想打开一个应用程序,并从它返回一些返回值,如成功或失败。怎么做?如何使用x-callback-url?

从文档

[scheme]://[host]/[action]?[x-callback parameters]&[action parameters] 

问题1:

我应该在[动作参数]什么地方呢?这是强制性的吗?

发送应用甲

- (IBAction)openReceivingAppBButtonPressed:(id)sender { 

    NSString *xcallBack = @"x-callback-url/payment?&amount=1.00"; 
    NSString *URLEncodedText = [xcallBack stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *ourURL = [NSURL URLWithString:[@"receivingAppB://" stringByAppendingString:URLEncodedText]]; 
    if([[UIApplication sharedApplication] canOpenURL:ourURL]){ 
     [[UIApplication sharedApplication] openURL:ourURL]; 
    } 
} 

接收应用B

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ 

    [self returnToSendingAppAWithResponse]; 

    return true; 
} 
-(void)returnToSendingAppAWithResponse{ 
    NSString *xcallBackSuccess = @"success"; 

    NSString *URLEncodedText = [xcallBackSuccess stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *ourURL = [NSURL URLWithString:[@"sendingAppA://" stringByAppendingString:URLEncodedText]]; 
    if([[UIApplication sharedApplication] canOpenURL:ourURL]){ 
     [[UIApplication sharedApplication] openURL:ourURL]; 
    } 
} 

问题2:

在接收的应用程序,是它正确调用另一个的OpenURL调用发送应用程序A返回成功消息?

我能够实现我想要的。但只是怀疑这是否是使用x-callback-url的正确方式。 x-callback-url似乎对我无用。

回答

0

看起来像上面提到的方法是正确的做法。

x-callback只是一个“协议”来格式化NSURL,以便于在接收端处理数据并允许源应用程序接收正确的回调函数。 (例如,应该呼叫哪个动作名称)