2017-08-05 40 views
-1

誰かが彼のアプリからmoovitの場所への道順までうまくディープリンクしましたか?なぜ私はできないのですか?それはちょうどアプリを開き、何もしません.... 誰もが正常にどこに助けてください方向にリンクされている場合。Moovit Deep Linking Fails、Swift

if UIApplication.shared.canOpenURL(URL(string: "moovit://")!) { 
      // Moovit installed - launch app (with parameters) 
      let MoovitURL: String = "moovit://directions?dest_lat=40.758896&dest_lon=-73.985130&dest_name=TimesSquare&orig_lat=40.735845&orig_lon=-73.990512&orig_name=UnionSquare&auto_run=true&partner_id=<testApp2345>" 

      let escapedString = MoovitURL.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) 
      UIApplication.shared.openURL(URL(string: escapedString!)!) 
     }else { 
      // Moovit not installed - send to store 
      UIApplication.shared.openURL(URL(string: "https://itunes.apple.com/us/app/id498477945")!) 

     } 
    } 

でも、Moovit自身の例は私のために働いていません....何が間違っていますか?

答えて

1

問題は.urlHostAllowedパラメータに問題があります。 代わりに.urlQueryAllowedパラメータを使用すると、 '?'の後のパラメータのみが変換されます。

はあなたのコードを修正:

if UIApplication.shared.canOpenURL(URL(string: "moovit://")!) { 
     // Moovit installed - launch app (with parameters) 
     let MoovitURL: String = "moovit://directions?dest_lat=40.758896&dest_lon=-73.985130&dest_name=TimesSquare&orig_lat=40.735845&orig_lon=-73.990512&orig_name=UnionSquare&auto_run=true&partner_id=<testApp2345>" 

     let escapedString = MoovitURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 
     UIApplication.shared.open(URL(string: escapedString!)!, options: [:], completionHandler: nil) 
    }else { 
     // Moovit not installed - send to store 
     UIApplication.shared.open(URL(string: "https://itunes.apple.com/us/app/id498477945")!, options: [:], completionHandler: nil) 

    } 
+0

多くの人に感謝します!私はあなたの努力を助けていただきありがとうございます。そうであれば正しい答えをマークする。 – RandomGeek

0

SafariでこのURLを開いてみて、それが機能するかどうかを確認してください(私にとってはそうです)。 コードに問題があるようです.PercentEncodingを追加しないで試してみるか、新しいopenURL APIを使用してください。

+0

あなたは多分コードの例を与えることができることは、とても参考になります?。 – RandomGeek

+0

「Safariでコピー&ペーストする」の例と同じURLを使用できます。また、あなたのMoovitアプリケーションがあなたが開こうとしている場所と同じメトロエリアに設定されていることを確認してください(例ではNYCにあります) –

+0

私は何か試しましたが、動作しません。それはどうですか?私は非常に必死です:( – RandomGeek