<html> <body> <a href="sms:+24321&body=This%20is%20the%20body">Click Me!</a> </body> </html>
单击上面的链接时,iOS会成功打开本机iOS Messages应用程序.如果用户以前在手机的后台打开了iOS消息应用程序,那么iOS会正确传入链接中包含的查询参数,例如to:(24321)and body :(这是正文),但如果用户尚未打开iOS消息,则iOS会打开消息,但不会打开消息并填写正文.
这在iOS 10上不是问题,似乎已在iOS 11中引入.
解决方法
这显然是一个iOS 11的bug.
与openURL相同的错误,使用此代码,没有if状态,我们有相同的结果:
NSString *sms = @"sms:+1234567890&body=This is sms body."; NSString *url = [sms stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; }
通过双重调用,它首先打开消息应用程序,然后传递正确的参数.
Web代码也应该这样.
这个答案不是为了赏金,我只想和你分享我的考试.