[iOS] ブラウザのURL

iOS向けアプリでUIWebViewを利用したWebブラウザを作ったときに、AppleにRejectされましたので、その対応をメモしておきます。

開発5年目にしての初Rejectでした(笑)

さて、Webページの表示は、myWebViewという名前をつけたUIWebViewオブジェクトに対して、URLを渡すことによって簡単に実装できます。

    NSString *urlString = @"http://www.google.com/";
    NSURL *url = [NSURL URLWithString:urlString];
    [myWebView loadRequest:[NSURLRequest requestWithURL:url]];

URLはWikipediaによれば、「(スキーム名):(スキームごとに定められた何かの表現形式)」という形をしているとされています。

ところが、Appleのレビューアーはアドレスバーに「google.com」と入力してしまったので、myWebViewはこの文字列を適切に評価できず、次のようなエラーを吐き出しました。


これがバグに当たるということでRejectされたわけです。

URLではない文字列をアドレスバーに入れたのがバグというのかどうかは置いておいて、確かにSafariなんかは期待するWebページを開くことができるので、対応すべき問題であることは確かですね。

ということで、URLにスキーム名が含まれていなかった場合には、頭に「http://」を付加するように修正し、無事に審査を通ることができました。

    NSString *urlString = @"google.com";
    NSURL *url = [NSURL URLWithString:urlString];
    if ([url.scheme length] == 0) {
      url = [NSURL URLWithString:[@"http://" stringByAppendingString:urlString]];
    }
    [myWebView loadRequest:[NSURLRequest requestWithURL:url]];

以上です。

0 件のコメント:

コメントを投稿