2

カスタムスキームが次の場合、別の URL でアプリにディープリンクする必要があります。

myapp://

ディープリンク URL は次のようになります。

myapp://?type=url&url=[another URL]

問題は、「別の URL」に ?、/、& などの区切り文字が含まれている可能性があることです。引用符を使用することを考えました。

myapp://?type=url&url="http://another.url"

ただし、別の URL にも引用符が含まれている可能性があるため、それを行う方法はありますか?

ありがとう

4

1 に答える 1

1

2 番目の URL のすべての特殊文字を適切にエスケープする必要があります。私が書いたユーティリティメソッドを使用して支援します:

+ (NSString *)encodeString:(NSString *)string {
    NSString *result = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, CFSTR("% '\"?=&+<>;:-#\\/~`!"), kCFStringEncodingUTF8);

    return result;
}

それを(ヘルパークラスで、またはカテゴリに追加して)配置すると、次のことができます。

NSString *link = @"http://another.url";
NSString *escapedLink = [SomeUtility encodeString:link];

NSString *myURL = [NSString stringWithFormat:@"myapp://?type=url&url=%@", escapedLink];

このencodeString:メソッドは、URL のクエリ文字列を作成するために使用する可能性のある URL パラメータ値を適切にエスケープするために使用する必要があることに注意してください。

于 2013-08-13T04:02:36.410 に答える