{"id":14025,"date":"2024-01-02T11:59:35","date_gmt":"2024-01-02T03:59:35","guid":{"rendered":"https:\/\/www.zhidianwl.net\/zhidianwl\/?p=14025"},"modified":"2024-01-02T11:59:35","modified_gmt":"2024-01-02T03:59:35","slug":"h5-ios%e5%b0%81%e8%a3%85%e6%9c%89%e4%bb%80%e4%b9%88%e6%96%b9%e6%b3%95%e4%bb%8b%e7%bb%8d","status":"publish","type":"post","link":"https:\/\/www.zhidianwl.net\/zhidianwl\/2024\/01\/02\/h5-ios%e5%b0%81%e8%a3%85%e6%9c%89%e4%bb%80%e4%b9%88%e6%96%b9%e6%b3%95%e4%bb%8b%e7%bb%8d\/","title":{"rendered":"h5 ios\u5c01\u88c5\u6709\u4ec0\u4e48\u65b9\u6cd5\u4ecb\u7ecd"},"content":{"rendered":"
H5 iOS\u5c01\u88c5\uff0c\u662f\u6307\u5c06HTML5\u7f51\u9875\u5c01\u88c5\u6210iOS App\u7684\u8fc7\u7a0b\u3002HTML5\u662f\u4e00\u79cd\u6807\u51c6\u5316\u7684\u6280\u672f\uff0c\u53ef\u4ee5\u8ba9\u7f51\u9875\u53d8\u5f97\u66f4\u52a0\u4ea4\u4e92\u548c\u52a8\u6001\u3002\u800ciOS App\u662f\u4e00\u79cd\u672c\u5730\u5e94\u7528\u7a0b\u5e8f\uff0c\u53ef\u4ee5\u5728iOS\u8bbe\u5907\u4e0a\u8fd0\u884c\u3002\u5c06HTML5\u7f51\u9875\u5c01\u88c5\u6210iOS App\uff0c\u53ef\u4ee5\u8ba9\u7528\u6237\u66f4\u52a0\u65b9\u4fbf\u5730\u4f7f\u7528\u7f51\u9875\uff0c\u540c\u65f6\u4e5f\u53ef\u4ee5\u8ba9\u5f00\u53d1\u8005\u66f4\u52a0\u4fbf\u6377\u5730\u5f00\u53d1\u548c\u53d1\u5e03\u5e94\u7528\u7a0b\u5e8f\u3002\u4e0b\u9762\u6211\u4eec\u6765\u8be6\u7ec6\u4ecb\u7ecd\u4e00\u4e0bH5 iOS\u5c01\u88c5\u7684\u539f\u7406\u548c\u65b9\u6cd5\u3002<\/p>\n
H5 iOS\u5c01\u88c5\u7684\u539f\u7406<\/p>\n
H5 iOS<\/p>\n
\u5c01\u88c5\u7684\u539f\u7406\u4e3b\u8981\u662f\u901a\u8fc7UIWebView\u6216WKWebView\u6765\u5b9e\u73b0\u3002UIWebView\u662fiOS\u7cfb\u7edf\u81ea\u5e26\u7684WebView\u63a7\u4ef6\uff0c\u53ef\u4ee5\u52a0\u8f7d\u7f51\u9875\u5e76\u663e\u793a\u5728iOS\u5e94\u7528\u4e2d\u3002WKWebView\u662fiOS8\u4e4b\u540e\u65b0\u589e\u7684WebView\u63a7\u4ef6\uff0c\u76f8\u6bd4UIWebView\u66f4\u52a0\u9ad8\u6548\u548c\u7a33\u5b9a\u3002<\/p>\n H5 iOS\u5c01\u88c5\u7684\u65b9\u6cd5<\/p>\n H5 iOS\u5c01\u88c5\u7684\u65b9\u6cd5\u4e3b\u8981\u6709\u4e24\u79cd\uff1a\u4e00\u79cd\u662f\u4f7f\u7528\u7b2c\u4e09\u65b9\u5de5\u5177\u8fdb\u884c\u5c01\u88c5\uff0c\u53e6\u4e00\u79cd\u662f\u624b\u52a8\u5c01\u88c5\u3002<\/p>\n 1. \u4f7f\u7528\u7b2c\u4e09\u65b9\u5de5\u5177\u8fdb\u884c\u5c01\u88c5<\/p>\n \u76ee\u524d\u5e02\u9762\u4e0a\u6709\u5f88\u591a\u7b2c\u4e09\u65b9\u5de5\u5177\u53ef\u4ee5\u7528\u6765\u5c01\u88c5HTML5\u7f51\u9875\u4e3aiOS App\uff0c\u6bd4\u5982\uff1aPhoneGap\u3001Cordova\u3001Ionic\u7b49\u3002\u8fd9\u4e9b\u5de5\u5177\u90fd\u63d0\u4f9b\u4e86\u5b8c\u6574\u7684\u5f00\u53d1\u6846\u67b6\u548c\u5de5\u5177\u94fe\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u8fdb\u884c\u5f00\u53d1\u3001\u6d4b\u8bd5\u548c\u53d1\u5e03\u5e94\u7528\u7a0b\u5e8f\u3002\u5176\u4e2d\uff0cCordova\u662f\u6700\u6d41\u884c\u7684\u5c01\u88c5\u5de5\u5177\u4e4b\u4e00\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e00\u5957\u63d2\u4ef6\u673a\u5236\uff0c\u53ef\u4ee5\u8ba9\u5f00\u53d1\u8005\u901a\u8fc7JavaScript\u8c03\u7528\u539f\u751fiOS API\uff0c\u5b9e\u73b0\u66f4\u52a0\u5f3a\u5927\u7684\u529f\u80fd\u3002<\/p>\n \u4f7f\u7528\u7b2c\u4e09\u65b9\u5de5\u5177\u8fdb\u884cH5 iOS\u5c01\u88c5\u7684\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n \uff081\uff09\u5b89\u88c5\u7b2c\u4e09\u65b9\u5de5\u5177<\/p>\n \u9996\u5148\u9700\u8981\u5b89\u88c5\u76f8\u5e94\u7684\u7b2c\u4e09\u65b9\u5de5\u5177\uff0c\u6bd4\u5982Cordova\u3002\u53ef\u4ee5\u901a\u8fc7npm\u547d\u4ee4\u8fdb\u884c\u5b89\u88c5\uff0c\u4e5f\u53ef\u4ee5\u4ece\u5b98\u7f51\u4e0b\u8f7d\u5b89\u88c5\u5305\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n \uff082\uff09\u521b\u5efa\u9879\u76ee<\/p>\n \u4f7f\u7528\u7b2c\u4e09\u65b9\u5de5\u5177\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u9879\u76ee\uff0c\u53ef\u4ee5\u9009\u62e9\u4e0d\u540c\u7684\u6a21\u677f\u548c\u63d2\u4ef6\u6765\u5b9a\u5236\u5e94\u7528\u7a0b\u5e8f\u7684\u529f\u80fd\u548c\u5916\u89c2\u3002<\/p>\n \uff083\uff09\u7f16\u5199\u4ee3\u7801<\/p>\n \u7f16\u5199HTML5\u7f51\u9875\u548cJavaScript\u4ee3\u7801\uff0c\u5b9e\u73b0\u5e94\u7528\u7a0b\u5e8f\u7684\u529f\u80fd\u548c\u4ea4\u4e92\u3002<\/p>\n \uff084\uff09\u6dfb\u52a0\u63d2\u4ef6<\/p>\n \u5982\u679c\u9700\u8981\u4f7f\u7528\u539f\u751fiOS API\uff0c\u53ef\u4ee5\u901a\u8fc7Cordova\u63d0\u4f9b\u7684\u63d2\u4ef6\u673a\u5236\u6765\u6dfb\u52a0\u76f8\u5e94\u7684\u63d2\u4ef6\u3002<\/p>\n \uff085\uff09\u6253\u5305\u53d1\u5e03<\/p>\n \u4f7f\u7528\u7b2c\u4e09\u65b9\u5de5\u5177\u8fdb\u884c\u6253\u5305\uff0c\u751f\u6210iOS App\uff0c\u5e76\u4e0a\u4f20\u5230App Store\u6216\u5176\u4ed6\u6e20\u9053\u8fdb\u884c\u53d1\u5e03\u3002<\/p>\n 2. \u624b\u52a8\u5c01\u88c5<\/p>\n \u624b\u52a8\u5c01\u88c5\u662f\u6307\u901a\u8fc7\u7f16\u5199\u539f\u751fiOS\u4ee3\u7801\u6765\u5b9e\u73b0H5 iOS\u5c01\u88c5\u7684\u8fc7\u7a0b\u3002\u867d\u7136\u6bd4\u8f83\u7e41\u7410\u548c\u590d\u6742\uff0c\u4f46\u662f\u53ef\u4ee5\u66f4\u52a0\u7075\u6d3b\u5730\u63a7\u5236\u5e94\u7528\u7a0b\u5e8f\u7684\u884c\u4e3a\u548c\u6027\u80fd\u3002<\/p>\n \u624b\u52a8\u5c01\u88c5\u7684\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n \uff081\uff09\u521b\u5efaXcode\u9879\u76ee<\/p>\n \u5728Xcode\u4e2d\u521b\u5efa\u4e00\u4e2a\u65b0\u7684iOS\u9879\u76ee\uff0c\u9009\u62e9Single View Application\u6a21\u677f\u3002<\/p>\n \uff082\uff09\u6dfb\u52a0WebView\u63a7\u4ef6<\/p>\n \u5728Storyboard\u4e2d\u6dfb\u52a0\u4e00\u4e2aWebView\u63a7\u4ef6\uff0c\u5e76\u8bbe\u7f6e\u5176\u5927\u5c0f\u548c\u4f4d\u7f6e\u3002<\/p>\n \uff083\uff09\u52a0\u8f7d\u7f51\u9875<\/p>\n \u5728ViewController\u4e2d\u7f16\u5199\u4ee3\u7801\uff0c\u52a0\u8f7dHTML5\u7f51\u9875\uff0c\u4f8b\u5982\uff1a<\/p>\n “`<\/p>\n NSURL *url = [NSURL URLWithString:@”http:\/\/www.example.com”];<\/p>\n NSURLRequest *request = [NSURLRequest requestWithURL:url];<\/p>\n [self.webView loadRequest:request];<\/p>\n “`<\/p>\n \uff084\uff09\u5b9e\u73b0\u4ea4\u4e92<\/p>\n \u901a\u8fc7JavaScript\u4e0e\u539f\u751fiOS\u4ee3\u7801\u8fdb\u884c\u4ea4\u4e92\uff0c\u4f8b\u5982\uff1a<\/p>\n “`<\/p>\n \/\/ \u5728JavaScript\u4e2d\u8c03\u7528\u539f\u751fiOS\u4ee3\u7801<\/p>\n window.webkit.messageHandlers.native.postMessage({title: ‘Hello, iOS!’});<\/p>\n \/\/ \u5728\u539f\u751fiOS\u4ee3\u7801\u4e2d\u63a5\u6536JavaScript\u6d88\u606f<\/p>\n – (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {<\/p>\n NSDictionary *body = message.body;<\/p>\n NSString *title = [body objectForKey:@”tAPP\u5c01\u5305<\/a>itle”];<\/p>\n NSLog(@”%@”, title);<\/p>\n }<\/p>\n “`<\/p>\n \uff085\uff09\u6253\u5305\u53d1\u5e03<\/p>\n \u5728Xcode\u4e2d\u8fdb\u884c\u6253\u5305\uff0c\u751f\u6210iOS App\uff0c\u5e76\u4e0a\u4f20\u5230App Store\u6216\u5176\u4ed6\u6e20\u9053\u8fdb\u884c\u53d1\u5e03\u3002<\/p>\n \u603b\u7ed3<\/p>\n<\/figure>\n<\/p>\n