質問: `[[UIApplication sharedApplication] openURL:@""]` にて、日本語が含まれるURLが開けなくなったのですが、情報をお持ちの方はいらっしゃいますか? コンソールには `LaunchServices: ERROR: There is no registered handler for URL scheme (null)` と表示されます。 開けないのは例えば以下のリンクになります。 `[[UIApplication sharedApplication] openURL:@"http://お名前.com"];` `[[UIApplication sharedApplication] openURL:@"instagram://tag?name=焼肉"];` それぞれSafariからは開けるので、実装上の不具合かなと思っています。 しかし、日本語の含まれないURLであれば上記のソースコードでURLを開くことはできます。 もともとは日本語を含むURLでも開けていたのですが、Xcode7にアップデートしたあたりから開けなくなったような気がしています。 何かできることがあれば教えていただきたいです。 よろしくお願い致します。
回答: ドメイン名に日本語が含まれる場合はPunycodeエンコーディングが必要です。 クエリに日本語が含まれる場合はパーセントエンコーディングが必要です。 共に対応しているライブラリがGitHubで公開されていました。 Punycode-Cocoaを使えば簡単に対応できます。 試しに使ってみたところ、 ``` NSString *name = @"http://お名前.com"; NSURL *url = [NSURL URLWithString:name.encodedURLString]; [[UIApplication sharedApplication] openURL:url]; ``` でSafariが起動して正しくページが表示されました。 URLが`https://www.google.co.jp/search?q=日本語`のパターンでも全く同じコードで問題なく開けました。 なので、`instagram://tag?name=焼肉`もこれでいけるのではないでしょうか?