2016-07-15 17 views
0

私はSwiftで作成した自分のアプリケーションでWhatsApp URLを開きたいと思います。 WhatsAppのためのURLスキームは以下のようにSwiftエンコードWhatsApp URL

whatsapp://send?text= 

と私のコードを見ている:私の問題は、私は私がのWhatsApp疑問符文字で開きます私の文字列を持っていること、である

 let originalMessage = NSLocalizedString("Open following url ", comment: "") + " " + "http://<url>.<com>/?=test" 
     let escapedMessage = originalMessage.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())! 

     // Check if url will be opened 
     guard let whatsAppUrl = NSURL(string: "whatsapp://send?text=" + escapedMessage) else { 
      print("error") 
      return 

     } 

     // Open whatsapp url 
     if UIApplication.sharedApplication().canOpenURL(whatsAppUrl) { 
      print("ok") 
     } 

「?」。私は文字をエスケープしようとしました:

"whatsapp://send?text=\"" + escapedMessage + "\"" 

私はWhatsAppでURLを開くと、私は空の文字列を取得します。誰かが私を助けたり、私にヒントを与えることができますか?

+0

'" whatsapp:// send?text = \ "" + escapedMessage + "\" "'それをしないでください。このように手作業でURL文字列を作るのは間違いです。 NSURLComponentsとNSURLQueryを使用します。それが彼らのためのものです。 – matt

答えて

0

すると、このように静的なURLを送信してください:

次のようにこれらのいずれかのURLを開くためのObjective-Cの呼び出しは次のとおりです。

スウィフトで
NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"]; 
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) { 
    [[UIApplication sharedApplication] openURL: whatsappURL]; 
} 

:から

let whatsappURL = NSURL(string:"whatsapp://send?text=Hello%2C%20World!") 
if (UIApplication.sharedApplication().canOpenURL(whatsappURL!)) { 
    UIApplication.sharedApplication().openURL(whatsappURL!); 
} 

リンク:

I integrate WhatsApp into my app

0

URLComponentはこれを解決する最善の方法だと思います。

let whatsAppHookup = "whatsapp://send" 
let address = "https://www.swift.org/?page=1" 
var urlComponent = URLComponents(string: whatsAppHookup) 
let queryItem = URLQueryItem(name: "text", value: address) 
urlComponent?.queryItems = [queryItem] 

let url = urlComponent?.url 
print(url?.absoluteString ?? "")