我正在尝试使用WhatsApp的自定义URL方案发送一些带有URL的文本.显然只有一个有效的参数用于此目的:文本:
NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"];
当我想将自己的URL附加到该文本时,就会出现问题.我选择使用以下代码对其进行编码:
NSString *encodedURLString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( NULL,(CFStringRef)urlAbsoluteString,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kcfStringEncodingUTF8 ));
该URL与文本一起发送到WhatsApp,但不会在WhatsApp的一侧解码:
有任何想法吗?谢谢!
解决方法
您正确地接近它,但似乎URL正在进行双重编码.确保消息和URL仅编码一次.
使用相同的编码方法,您可以这样做:
NSString *urlAbsoluteString = @"Hello World! http://yayvisitmysiteplease.com?funky=parameter&stuff"; NSString *encodedURLString = ...
这应该给你执行的URL:
whatsapp://send?text=Hello%20World%21%20http%3A%2F%2Fyayvisitmysiteplease.com%3Ffunky%3Dparameter%26stuff
这就像你期望的那样进入WhatsApp. (我证实了双重确定.)