2017-07-24 27 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,以便於在接收端處理數據並允許源應用程序接收正確的回調函數。 (例如,應該呼叫哪個動作名稱)