From d380df7c0f62d02c952107461c81a10f09ae44c9 Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:27:15 +0100 Subject: [PATCH 1/8] webview with messaging --- .../UserInterfaceState.xcuserstate | Bin 0 -> 18704 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++++++++++ SwiftUIWebView/ContentView.swift | 2 +- SwiftUIWebView/WebView.swift | 5 ++++- SwiftUIWebView/www/LocalWebsite.html | 4 +++- 5 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 SwiftUIWebView.xcodeproj/xcuserdata/radekmezulanik.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e24eeb20581f3f462e6f937ee4ebd0105066b690 GIT binary patch literal 18704 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 literal 0 HcmV?d00001 diff --git a/SwiftUIWebView.xcodeproj/xcuserdata/radekmezulanik.xcuserdatad/xcschemes/xcschememanagement.plist b/SwiftUIWebView.xcodeproj/xcuserdata/radekmezulanik.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..41e0c3c --- /dev/null +++ b/SwiftUIWebView.xcodeproj/xcuserdata/radekmezulanik.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + SwiftUIWebView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/SwiftUIWebView/ContentView.swift b/SwiftUIWebView/ContentView.swift index fdaca46..9d3523f 100644 --- a/SwiftUIWebView/ContentView.swift +++ b/SwiftUIWebView/ContentView.swift @@ -94,7 +94,7 @@ struct ContentView: View { /* This is our WebView. Here if you pass .localUrl it will load LocalWebsite.html file into the WebView and if you pass .publicUrl it will load the public website depending on your url provided. See WebView implementation for more info. */ - WebView(url: .publicUrl, viewModel: viewModel).overlay ( + WebView(url: .localUrl, viewModel: viewModel).overlay ( RoundedRectangle(cornerRadius: 4, style: .circular) .stroke(Color.gray, lineWidth: 0.5) ).padding(.leading, 20).padding(.trailing, 20) diff --git a/SwiftUIWebView/WebView.swift b/SwiftUIWebView/WebView.swift index 8cd6ec8..0ff9e09 100644 --- a/SwiftUIWebView/WebView.swift +++ b/SwiftUIWebView/WebView.swift @@ -103,10 +103,13 @@ struct WebView: UIViewRepresentable, WebViewHandlerDelegate { /* An observer that observes 'viewModel.valuePublisher' to get value from TextField and pass that value to web app by calling JavaScript function */ valueSubscriber = parent.viewModel.valuePublisher.receive(on: RunLoop.main).sink(receiveValue: { value in - let javascriptFunction = "valueGotFromIOS(\(value));" + print(value) +// let javascriptFunction = "valueGotFromIOS(\(value));" + let javascriptFunction = "valueGotFromIOS('"+value+"')" webView.evaluateJavaScript(javascriptFunction) { (response, error) in if let error = error { print("Error calling javascript:valueGotFromIOS()") + print(error) print(error.localizedDescription) } else { print("Called javascript:valueGotFromIOS()") diff --git a/SwiftUIWebView/www/LocalWebsite.html b/SwiftUIWebView/www/LocalWebsite.html index 4e07e38..6b7b5c0 100644 --- a/SwiftUIWebView/www/LocalWebsite.html +++ b/SwiftUIWebView/www/LocalWebsite.html @@ -41,8 +41,10 @@

SwiftUI JavaScript Interaction

window.webkit.messageHandlers.iOSNative.postMessage("Bla Bla Bla"); } - function valueGotFromIOS(value) { + function valueGotFromIOS(value = "prdel") { + alert(value) document.getElementById("output").innerHTML = value; + window.webkit.messageHandlers.iOSNative.postMessage(value); } From 06054e06a67b40a3ecabf5171cedc77092011df9 Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:30:12 +0100 Subject: [PATCH 2/8] correct parameter in function --- .../UserInterfaceState.xcuserstate | Bin 18704 -> 18742 bytes SwiftUIWebView/WebView.swift | 2 -- 2 files changed, 2 deletions(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index e24eeb20581f3f462e6f937ee4ebd0105066b690..9c7f19f14c0ed29fcdaf812282a7bc1129c13984 100644 GIT binary patch delta 6664 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 KyVjqB3;zcS`VV*j delta 6566 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 I`WWp0Z}puP8~^|S diff --git a/SwiftUIWebView/WebView.swift b/SwiftUIWebView/WebView.swift index 0ff9e09..bf03fd7 100644 --- a/SwiftUIWebView/WebView.swift +++ b/SwiftUIWebView/WebView.swift @@ -103,8 +103,6 @@ struct WebView: UIViewRepresentable, WebViewHandlerDelegate { /* An observer that observes 'viewModel.valuePublisher' to get value from TextField and pass that value to web app by calling JavaScript function */ valueSubscriber = parent.viewModel.valuePublisher.receive(on: RunLoop.main).sink(receiveValue: { value in - print(value) -// let javascriptFunction = "valueGotFromIOS(\(value));" let javascriptFunction = "valueGotFromIOS('"+value+"')" webView.evaluateJavaScript(javascriptFunction) { (response, error) in if let error = error { From b5b02c209a95a58f1715fc794b6af8512e10dd40 Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:31:19 +0100 Subject: [PATCH 3/8] default response --- .../UserInterfaceState.xcuserstate | Bin 18742 -> 23204 bytes SwiftUIWebView/www/LocalWebsite.html | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index 9c7f19f14c0ed29fcdaf812282a7bc1129c13984..381fcf2ef4fbe0979bbd8e8fecac9bc6a334fe3a 100644 GIT binary patch delta 10115 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 delta 7302 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 Z*`|c1g=SW~??6~l(v2$0s(Wbm{{Zz`(eMBO diff --git a/SwiftUIWebView/www/LocalWebsite.html b/SwiftUIWebView/www/LocalWebsite.html index 6b7b5c0..8aa0704 100644 --- a/SwiftUIWebView/www/LocalWebsite.html +++ b/SwiftUIWebView/www/LocalWebsite.html @@ -41,8 +41,7 @@

SwiftUI JavaScript Interaction

window.webkit.messageHandlers.iOSNative.postMessage("Bla Bla Bla"); } - function valueGotFromIOS(value = "prdel") { - alert(value) + function valueGotFromIOS(value = "Default response is nothing received") { document.getElementById("output").innerHTML = value; window.webkit.messageHandlers.iOSNative.postMessage(value); } From 597bd05d251d754877fc065b6090e58ef7abc8ee Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:32:01 +0100 Subject: [PATCH 4/8] typo fix --- .../UserInterfaceState.xcuserstate | Bin 23204 -> 23204 bytes SwiftUIWebView/www/LocalWebsite.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index 381fcf2ef4fbe0979bbd8e8fecac9bc6a334fe3a..834615865c0b687f3f8f344f26a3b47088e1d7af 100644 GIT binary patch delta 68 zcmV-K0K5OBwE?8H0kBpJ1T?Edud`YUBpm@gvwtW;1QP@v0uq4%J%FI11EB&HfdLtS aqLaZr7_;mwGbjhhEXpj;EYh?|`V2gfYREYB>_vnEx31&vn~YybcN diff --git a/SwiftUIWebView/www/LocalWebsite.html b/SwiftUIWebView/www/LocalWebsite.html index 8aa0704..0e8dcae 100644 --- a/SwiftUIWebView/www/LocalWebsite.html +++ b/SwiftUIWebView/www/LocalWebsite.html @@ -41,7 +41,7 @@

SwiftUI JavaScript Interaction

window.webkit.messageHandlers.iOSNative.postMessage("Bla Bla Bla"); } - function valueGotFromIOS(value = "Default response is nothing received") { + function valueGotFromIOS(value = "Default response if nothing received") { document.getElementById("output").innerHTML = value; window.webkit.messageHandlers.iOSNative.postMessage(value); } From 56bef8f190e5d68ba8fdefb24756978270e6513c Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:32:09 +0100 Subject: [PATCH 5/8] . --- .../UserInterfaceState.xcuserstate | Bin 23204 -> 23204 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index 834615865c0b687f3f8f344f26a3b47088e1d7af..ca2c5a804cfbe469673cf6371727fff1f6129d6e 100644 GIT binary patch delta 19 bcmZ3om2t^d#tmWIES7TXD>p}Rd-($ZOa}(~ delta 19 bcmZ3om2t^d#tmWIEGDa+*KdyE_VNb+PLc;q From 1b67a17e0ee97260f82b4dd04c5d5fc534750d54 Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 16:43:11 +0100 Subject: [PATCH 6/8] toggle public / local web --- .../UserInterfaceState.xcuserstate | Bin 23204 -> 22375 bytes SwiftUIWebView/ContentView.swift | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index ca2c5a804cfbe469673cf6371727fff1f6129d6e..d47d921a6927e431992c90f4a939d338b1011034 100644 GIT binary patch delta 8619 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 Date: Wed, 16 Mar 2022 16:45:51 +0100 Subject: [PATCH 7/8] variable in string in swift way --- .../UserInterfaceState.xcuserstate | Bin 22375 -> 25206 bytes SwiftUIWebView/WebView.swift | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftUIWebView.xcodeproj/project.xcworkspace/xcuserdata/radekmezulanik.xcuserdatad/UserInterfaceState.xcuserstate index d47d921a6927e431992c90f4a939d338b1011034..ad07df10f71862484b546c2b4c9f07e20fead88b 100644 GIT binary patch delta 11231 zcmai330xD`x6ZvYcLr1-A%Q?3A%P^2Kmvip1!5o&2w|}W+;Yu)O;w`yyxTKBcSI|NrcL`|bS)NE=2wUAmwEvHscYpIRY_tY+GH?^OtqYhKYsN>X+)M@HG zb%AG$am=t1;gx{@A3e@G9dhtb37(e!wFGChU%(6i|U^g_Cd zuBKPfU(?^xo9Qj|R(c1$lio`oppVc;=}Yu=`YwHszEA%_KcN4l-ypXD0R)jB@<)Lv z422^ZQX>u0qF7`=MwE!ms5!Et4CFu^Q76|%B^ zdzih9dmnR*q&?|TaJ?1UTj~s zKRbXO#13OevF|47TgnzItezDIkteUV4G*U zbR@MC?D8}T3ya<@7}ZTEcC>Bn7}#@2|MCHq1p|AQR#prgaDrUE7wiN3Jvm{ex`W_Q zCvs6vMZfZQODp?SgTsPR|9QacT5uHn;5im%0LMIkh9x%UXE-U?1bzftJ8}1YhHTC@ICh<7@>$!iB8YY8@&?X&wE9>L zg1K+FHQYpQGB=#-?6W?TkQ`<~2h8Ta;=bnAza=@D+69)A`PO;*$-2#e}?7R@CrI`A(n62Yx84f(9WhQ+Yj$CWC=mBTz&=8};I{=vY1V!4uFSqoQ# z$z^aQTtmP-PQX0J9VHp+ICu8%SgwO#zs2%2_rrf@RshUvW1Z0DVIe1|^^X|Ke_Ozj$Bcgf3xN z{pu(`su6*j^5QH{CZJUcb9(jY3Bz(olO)OQHfl$b#MJ6GdztJF$LMkxgP8Y+T{ zq~zRv?ho!k4HYGbrBvKQvY3n7`ttVL)@w3Fxmdp#FwBWu;m+ppF6HUU*@zXoz7di{MTP7XY`cM^AU+O&! z5C#keECzlU_+!urgT@#%!5{#Gz*?%mk2BN zaD^gLLRe20YN9v#Wx>>RY9`N#85jgtQL``*^Q>^sq2}_e_!LSoknpsa2c;N<{96iW zw7;b}1C~H@G5`kfKjz|9`Z3|6s}y-=!*^DS`K_ z42&2gVvtlz)oTvw4)r@lGzUdA2L`4FVps@?QZY#5T47-Ia>GUO!h?E)L2^AeXkK~H z6ixFl3{o&K``)>6!gyiJdbH`rG_O8rLdm98bRY)JNafJV=wR9_KqNGw4F=5#31}%# zf)*a2C8rg%%9|)?CC`zT|8d%`ZAP3!ln<>F{8mL1wuOQ+E02EEIT;xkJg23h~Ac!fI*uE z?A!SiCkCDPLb6`c;$2{;M-cGokr=dX0DsKC%Fc$hO`s?8pnrrx`zm@81|4|N!|ACs z(Gb;8LQm&G??_Pf2}IAajIb1X4$UVM7(;)?W8V4g*?*)3uQa3=(ThD-^kGyry~J}# zZ*>1hTSC{+OMMto1jzR==w6S}YaerJ!RY1mYWfTMOL`6c6}=XNQVfXO$}#ATK_3h% z{(@|ZSJc&V>)t{}Z=^TzS-vL*W!#ufSpx?SDytaKzLY3aAzL5v^frDN2EF)k?dlu8 zhIHU! z`l9D${LGdUgaJYVdOsmijp8@;e?FgGrmu7pN=Yx&x_nsW-;!a!AL$yjq+e)L;;FGQUAD1 zDTqVS7>waaWpZ;d9f~V@_o?Lj@0g4cSG}rK*idOv9MbcvB1vItDc{@tfjC7R$aiC$@El{dJzhnugKY?13d2A@XU8@pf zS!reIJ0g14`uT}p0-*4?OfjgPpj^;n{cuw*bl(PVpa6!E?Y3CbQnVo5NK2SbHrlda z9+CPZ$d1|=vYWO7ZXn8a4?IG&;}s$a|DeQ_nR=IOcC{wkT?45}WJ_xSwU}B;t)n*h z#P{3Hg?7H*4e!)$3?}&uv!hIRmsTZ(Ln=#q^ecCeh1MWD$`Xuf+p2{B)nHgQdPksN zg>sM+I5)t~%!C(~zq_UsJ;Mc##4@2Wf_C&+c2s9FnLZi_b z?(UsL`9h}RLJwS47c-c;Ln74Wt+Ku+0 zy=WiWkLu6?bPyfFpcaGG7<_@jml&+U;42JBUR;O4*BGp?MMvt5KJL>C=tth@4Gl(r z`^0l*6L0p<7<|)U_O1U_Ei^3sF1pYA;~oYZtI!`9Y~uY9fgYo0yg#1s{`ijg zgO(z)susj3-Xz(d4DcGv2zZ0H5QAyLD&o`@d{uEXEF&hZ7UReGGmV(WOcN%631os8 zAtPdfG1!K|_ZV!)U}G1!FxiG@8F?8RUo2K!et5}(~n7!%IOmChM#lgH#^ za14Xv7@Vk~R7CkjagRu1e&{*ZvUQBGN5g=&Ob4G^+w*Sy@vnRFUhTcMR@gK$vfSb7jmq=Aw@i7kExQC+0v>6PI(!f{kL87zSe~#spOuvXqTx zV^}q-!NgY5aKbPQ!#$B%b9325!EZHe5^G|UF_d9QhQ+)U5v+x6L4ts7$~I%0V;F&9 zB!==DHkD0dqcK!q7)2)J<5%mspR4f59F@&j2b=pZW2h)LkIm;EVyMC}n$!0bC^b-^ z^j3NH9hAO)uj4#bFsVM6*kZPWK);;axHa2`ZO*o1+k0=X#*mmG$54x5>~gjv+llSW zb|LSbFeGl%VW`J2!TUw$`7O8B&Gr@qv3=MIUPM$@^e>OG@BTw^pmo3&4CB4^n|+V% z=d0A^)$DtMQC(XPEGr$ZEUi?Unx>j9-h#mnB*YVlIQX_`u!Gqlq|EZis@M-POeA`R z@37e6q{H%F>Gb|~v!eySEg{{O_aq0%Lxrh)_2sKDc{JcHzTPrCPT(g97eosZ1SUbM zAYD)-Xe;O}=t}RS4->6=jlM$@wMf69Uy(;u6k^E3szf3sO2`8!Qt(k9)ED(b1JL`V zB4acTeS{{V$!IE??k3Nr7Ne^qiyN4>%phhOiPH7VKBkU5@j1*KWsdPd!ki{geh9Cb zd*rFlL&D&vguO4B*MyqEtcGpD7O>sPGn;Yjr|eR88T&Q6h26$(XLqu@*~9En_85DD zJ;k18pZiJu;{96s<@uHPwef4`*TJuopS#SjmtP;hzJC4u2KY_zo9Fkn-x0s_ei!^M z`d#+B<@dnvrN5tlfPbjJ$=~L0_s{ar@z3?o^Dp-w;6KHGn*WR@E1Rrqa=yv6fJOlW z1BL}m5112B9k3!`Rlw?iwE>JoGaD3p$fz^Ru1b!R1Bk)k*>ABk~hTMGBEtlqj-_(nWTW zLzE-R74;Gg77Y`P5RDRH(Kyir(L~W=(N57W(GQ}VqF+R}MR!DZMfXJyM2|#IM9)Mo zM6ZIy!6CuY;PBvxV0myJSSHyS3 zZzTSbU`dojD~XfnB?*!giAB;((n69ZDU`I8bd&Uulu3F?21_`}Sjl+FN0LdB$&#s( zd6M~(g_0$bYRNLm3dt(T21%X7eOYox@+>4QL>3Yok`Q7HNeZ!qGz)1Fk{0rANY9Xd zAwxrkhl~sv9pVld8!|p*S;)?i8zE0aLqc_-me7*WHlgi8JA`%$?GoB8v^2D5=%~;c zp^HMl4LuNgBlK42uc5z%{vLWS^bcu_G(nmowMd&uTS(KSxzZA82Wcm17il-Qw7+zq zbeQxr=>q8%X`S?-^sw}(^pfm|s{xm@G^imK2s8W)5o_HZAPaurI>a zh3yYJ7Iq=*QrMO7_;7Q0MtF93QFzDj3E`8&zX{(JelYxW_}TFD;TOYig#Q+PU&hG9 zvN)MumLN0Al4Qv;v#hDCxhz%Yw#tfRC9*cMcCrq#PO>htZn9EYPg%LFw`{zuMz&w} zYeYaqN<_Pe4yeR;`@jl5xXJ|MVyK_9dS0|e8k0w%Mn*2u1DO9co6X@;%UV5 zh?kLJk(x+-WJ07dG9}Uy*(|a}WNu{Z$aaz4BTFNDM)r#w5IHiEiyRv{KJsICvp zzha=`1H~AHM=?k7nPQ$|zQVmwu~<>1s8K9atWa!Ke6QG{*rnK`*r%vd98?@u990}s zoKW103XDpQY8^E!YEjg#sB21rQm)i0b;@|9LD^K9uCyz&l-WwB(xq&x?4azV?5gap z?4fikrz&SDJ<2)C&y@?5i0Un##iWAD=#X4Q#DZqs)VXw zl|&V)3RB5ckt&O-nW}{isRUcJfRX-J{8mpS2nx*on z=BTPwOI6END^(j+dsO>Wb*h8Wn&{+cb9B?_=F!>Fouj)(caQE7T^8Ldx=(c9=zh@y zqTi1m6#a4ZlxX*~=o!(oqCL@bqCbnC7d=0EVf5nYs_5^dFU5eEm>6eF|CqTkTVpQ7 zyiiNkN_C7{qmET4savSi)GgKNYP&j1ovn7NTdUitJE%LWyQ;gZN2@2RXQ*eXJ?gpY z&(#ami_~AL*Q&o$?^7R9|DZmuKB+#hzNo&ezN)^ie(KhQYRsCJ8k;6VQ>ZD{wAQrM zbkcOubkme--q+01crbD9g9OPVX1 zYnr>7`uei(@~CofEq; z_Cg$p)5JOAdd6{aAID9Nn-MoF?(?{sxMguG;#S42j{7ohbKJJL9dWzk_Qlo3-H3Y- z_cZQB+$$Z>(K<%wr<3Yrx>#L;&Zsl#n!0t(b!obmx&mE)-TS)1x({{3bt83SbXYe| zw?Ma8SFKyBTdrHFtJSU7ZPjhp?b7Yl)#(oE&gjnTF6u7p9_Zfap`O+=`bK)GK3pH6 zm+SR^e^>)#)Eh|-p$50iVuhv z#*5?Q;^X5D@rm)KcyoNS_|$l7e0sb+J}bU^ygR-oesBD*2|)=d3B?H?Bur2EEaCHn zg$aujRwk@V*pRR>VROQ^gzX7C6Lu#YOE{TuI^kTx#e~ZVFAaW%07H-=*dR588zKz~ zgTatwXkkb*I{brM-BH3e;6Jb zo*14RUK(B--WY*VW|SM1#%QD3s5QnJO~&TNG^5REH)a{%H5MCN8`~Ot8q1BnjTOcZ zjl+#2jiZfIjq{B2jSG#7jb9jd8uu9Y8xI^lG8c!R~8Qm9+SB#I0PmRxwFO9Dg z1&J_`PGl1O6B{Q6BO`n)%n?5xyHhp3G%JjAA8`CD!7Ss2p9i}6uA56zh zCrwvPKbdZtela~VJxQjLnPk7@M#;g+QOT<0m}E_Ia#-A?Bv|!yySx9PRZkw z=O?dC-jjSL`F8S~6md#OiZmrWB{D^kqD;}HB&QUll%%-(r;JOPnKCbBLCWHk>XcgI%HEVqDZivVNO@!SGdDH|nnh-bS#FLptIRQGjXBnwZSG;7U|wWi zZC+zuXWn4mX#UQ8#C+O(!F<_#&HR)3zWJ&7x%s8}wS~5@7Jo|DElE!|Jr=SqrQktYy|- z)(Y!;)&bV{ts|{ttk^o z^%v`H>+jZk)<3Kdtxv4atS?$hTQ+UkvE`_iOIq%0dE4f1i?e0hTG@(ht!-^>-E4i_ zw!XH0wgI;HZG&uX+gRHK+a%i*+caCPZKG|gZM$u!ZJ({qcF1Wfm!-$1Thr6iGt;xvbJO$FTcsDJw@z=D-Z6b(`k?g6^bgaArH@P> zlaABJrGJz@DSdMKiu8Tyw=?*s>o^OBGUSe-!?`ZF0?{4p5|G+-RKF&VDKFL1KKGW{8&#^DH zud~%k-xhL~>R!CNhtoB($vu0;4%vzFFleH{sP1eS&@3OXJZOhu8wKMBz*72-U zS!c4&XI;#C?qD2^9RUuZBg7HrkU1h9@eZ@Y?#OlIJ6bu49PJ$)9i1Ir9o-#c919&^ zJ2p6WI`%p09ETjo948$=I?g!UHysbN{jwWp2WE@1CE3z!S++b|nH`g@%}&dFgId${a^d&z!M2i*r`ytj<}Jvo`0uoLxD4 za`xrap3@aZaHbE$QkMkcSbms&KRfG8Ru-~bU0mZXTGzQv&7lf z*}>V#+1EMLIn_DC`H6FmbFOo~bCI*kxzxGBS?k>H+~wTk+~=%w9&#RW{@^_BJmoy? zJnMX%E6Hu1+c9@c?$X@4+*>Zj72`^9CAyMbW>-sBjw{!d=PGcua=q*7;_B||>FVXG zaJ}c6*Yj`X-_L*TE?^4$3z`%J6$BSV z6etQ*1?qy>0$o97L6?GI1*;3z6>KWlT(G;~V8M}sV+AJ*ek{0N@N2=Hf_nuI3Z56d zDtJ=}3+X~bVW+~0g)<93DO_B*yl_?F7lmIHep|Sya7*F$g*yuO7al8GS+u%nQ_DAwWVBl0X6p32K3agv5kk1sqjz?}ej9u!?)+9&vAt)Lz-4d+Tm{#_ z4e%3q4E_MGz-#aZ3Lu6A)`IWB5U7U+7!MPm5t?8kG(!taf^}drbU+WxfH|-cYz&*g zX0SPI2iwCAu%{1x0zZX=;9xiej(|SM!?AE2oCKG_a=09>fGgoDxEfZ#HE=Cl2iLeH4mBNQ%Ny z6q2KQ=mV6DQcxWT7DFVq|LLHVdZ z8isf@9!*Bm(QM>L^Ux;r1=@_hL|f2Sv<-cQwxbVo8#8FEAEE7 z<9yr?7vLg12oJ_1un!mG33v)F#btOIF2~F93cM1p!mDuw-iUYM@9=qi0bj(I@MU}j zU&Yt(_xL)#g@3|7;|KT&eu`h=*Z2*7M|=VTNGSg3?!Z;5F;^>L{f)X ziIcd7kA?Z&(B?HJnQbY!kVT32+$pkWk%p?oRB2q#=C(FqS zvWM&?`^bKBfE*-WlSAY%IYN$-Z^$`vnOq^a$Za2aKz<=l$#3KtSDO=ZAzUaY;>27S zC*h=AI49#GxJWLFlXD6#np1KKoRKqeiJY0Ua7kPpE|qh09xj9Pa+zEM?jx=lm&^6w zdUAPOFRnKp#`WRyxk9c#SHunHMsu`PY{8)X{Br`KAVd%<5D6syi`W8k{T%Uu=9|Zp z+88J{`)lbS9($(CAO0QhyJTHNVsBwVQC>k&>%MtIECYx1?Nubg{@~g^Fw8%(wi=As zysGvvA~aKAqo4@|O(|%$*%J0CKneI9Eape>KA!T$=RheaWA7aY%E5Af zR)iU?1{MC22sJ7LYy1l%bi%6p>p&P-&h!2sl;Q7JUHKw##s71JQoOB9@T*|tIk26L zvjgk|yZn)nBhWsu-@hqR#>P3|-w+v1z6OWDVgKpKZVAW0@eY}-TYlI#Kd)K0qCREd zgka=9FPs$&6$}F>!MFbQQD$(;KQSuFdWMaCmWBNt*x9COuBCgofq5O+>wvucZbf|u z=kWr5DnG93!HeKhtERcFS~M;L7yXZ-BK_sjbwXNpFYGz2>i+lOx?ik}U=#bnAF5RN z{u|$$U_7`D?l63Bg8N`9KbN1zf6mWl_|D}^{u|$)!GkJ%K^VV~_wy6@$^0@&nPr+~C89#@g$It&8?wjBRgL5wb89zF;izqappC*Mp^YW`jL~3ZMhMn)okFLH1 zK_wFl0!#=i5r-VuCHRV8Y z_{IDZekotdm+{N^a(+3#f?rty6@qwyL12Jt7z4uCt4cIL zT|-MCg>}KmQdo~)%@n|Sn@Z0`_N0`reg#BOv zEabo9ck;Xb;t_U)0~wFo`5pd`HS(DMNR@wbHnNhl-T&Z>R&uu2e^}Ga_cv#>lC!-v z@lJ-H35;vt6gU-5gVW&*I1|o-v!Nf(fphr-{6YR}{t$ndKf)j7kMYO(6Z|)8;Jj+y z7QqtuIb6(`TgsR_Sd_&4)!D=EF>zmg!gR`QNe<&}E@-gAcx z8S;NmVN|>Foj?682PCeP!vlXaW8U9#K;lX{Jm}DWQ1|@4JuH2S`qeZjq(FL>&L|ow zkqW6%4ALMi(xF%s$N$Pd=AZCS`QP|w{O|l9{B!)}AmQvH1f-F7P;+7Lbd7Rjmc&VPK#PcIk0{H1GzJx;u@r<*5K4ilMg(<2|IYuv>NEIv$wo5*d{ZC}5bmq0+12^a zkLLw70M19{EZflnv=A*qCFpas7%f3dQ7I}z%P5di5Ke)Nf(QyCDTty#PJx1gXbO}R zsMet6)eNtOC1_0`@zHugJO%11k}1&e7buA1IhOnsB>3wZ&a$Lm=RvyzOz)u}riSYM z|1<4tW_c7H572y!0&OWeL4htnbQC&;&Q=k9CO~xTUrFol>WS2$OXwO)dvqCHL02iz zQ(&MV{=YN7WlYUy+(kcD$>M%M7RJ8^3#ltpqetl1E~4=4%mxj5_AM$Lkkxk}I}gh( z>el0vGW6K*t!wf9!vUe+(6efOndM5Qz*5C8^ITQxdId%^1Z>*9J~08XaBNkIlfl7dG59Ur(89M~OrCLKGm z3)iQ>MFBgzDe#mF3?K|2BtKM(md3XojhmYY))*aH>Qnfu>rgla{&`dNJm7|qtEn9}} z@-MKfeJpQVRE04SPwLb(x5=QQZr$_qGTE$_;fZ*%U}Wp2xq-iGqL_-A6IqR?;pun= zo{4AS+1QWg;JFkqmReEJnu0bIw56aO1??&5KtadV4D$JS0bYm~;S&5gUW}In(CZ)M5?Q{Y49Tn?6bhF8{m^cFlr>4b2k*uE@P2#%AH-kdL-;U0LP1vw zx>3-bf*us~q#%!iUMUpxrl1c6eJk*>s%nZ);&1UOrm-`DTKaKKEiIs+h=M@@(G9Nj zz}ff*Rz~p+3O=bWqxd!}qxcTK8#pM)r=VZenJ*Ug5e=$|>lgfpl~eqXg2Gb#D+T=n z<}h@U~00iQCLjGyBd6tDs|@Lw)StR$6%4FAboch~4}1%ZTAmQR8M<#R|G zeu1B}C)x9?8b|efpU4<0q&5+f5E4p6L`=engh&bNFT*GpPQeJ)^e7lb!DtG66z~*K z3dU5Bh$>KsqRK=NbpVv&8c@dlZ6hXCg5n`&1`4rIFt!>L!d43Z!$wqtL2Sg%z#y#B zj4vgu(o6_|p&<2128)Nd17J*KV4&6kFaQfF5RW{IG^z?WClKyr7A|6PWZ{Cq?fmAX z6Kkua1<55XNh{Ktv>|OtJJOzXARTGIBTl1WIt4Q*U?y=E1+yveQ!s}DChpJHkj~XH zcZVgUXP~W;-hrs+)kM7@&{jVWSZWGN|LUq_a3Jy_6tFd4B|BvJ|EsGKN{R!KkD*{; zDPc}yQKfw%6Umf7Xbs5ZKvykcp~0g84V(`|rkzFRvaU*I6F*_oT};6e3YIQ|=b4{A z$6sTG_Nu>gW=l;Cx{FC^6;4Y7IF&SYtfovq3C@803 zIRz^ySV_Su3RY84LBSdd)>5#pf^4ovXj|1vk?aiMv%UtOja6$!3cjq=L^wGXK;}3F z8)}d_S-DzNh`%Ej0vMd9U{fi%NWm9X7+fXS1MFW5u)n!-!H8e*8>-2Vxm2p}YWNPZ0r`G|sTrQ|UMU-?On-ba4t1OizF`GY(sFUU*sio7Oo$e-jb zc}D>&B|DipqhL1$dnnjT!9EK1Q*eNSgB2X$U?5tKa2yxJ1#`6mv3^a#p+LA49H!t1 z1&ktQkB+lTx^}E7_s%QI&1}Rvbk*;fn=5jffI6It)3J)isks%z{g2i&6IHU)PmxL5hh?ZC9OmD7r9F~P_66@+phbDsoSWl`ULc{+z7V9sC;L`%D;V_Pw-$VTWwU{923ag?rf{=K77cU z&J?x@^b21s2o^*Mw1PxIU4dOtU(j68TF_C@neEcLaTDB%?alUPJF^A2Kiiibf`{Xg zY&UiXKEn21FR^{sYi!T;2HSPL!wUWHthT>mJFahufK_hHDsf96@e!6IWL0&dgw2nICdlTn=NW3)hWpXXbIexxU;d430wXQ*IzPo?F1J2W13h27MTm6_gXyFK9~8lAujNdxDMx9Sb@UbTa5v(50X& zLDzzO*Mn{Z-3odcEDY8MdxDz=e-zv-xJ7V>;9kLn!6Sod@Z{j-!CwS#3EmdGBY0Qv zp5V*Dw}Ri*0<}S&o6zvi16CDuU5Iqz<6+ILEA$l$PQ}j*@#8G00I9;4A z?kess?kVmi?j!zKoG&gA_ZJTk7l{Xpr-^5XXNmpdx#D@^1>zF%5^Ntbvf4I~XE*^)+*c9LF_VUl9WRLKI#Qc0PlT(Uy4PO?F=NwQh8MRG)PT5?%( zO>$jwL-J7aO7ceXRw|G}DVB0li8NdqA(cy`rD~~0s*_rz8Pc}WUeW8o%>xHY^(c)#!|;Y-5TgdYn(5q>iK zRQQ?jbK&R1FNR+Ze<~v~sVq@eU)Dj^N!CTyP1Zw}C+jU+AS;utmaUPklWmY~lI@Wl zlbw>Ck)4yBm)(}#l|70O`Xa(2>PEOC+z}ZOnGv}WT_d_j^o-~gF(_hmL~+E-h?0mE z5vw99BGyKt$l8(GNJFGE^25mHk-3qrB1 zr>LW-r$|<$D!hueiuQ_*iq49zitdV@ie8F7ijNif3aThpj8jZdOj1lyOjFEI%u@Ij za~1OxUniTMr+N*A$ zZm7;yH&QoIf23}%&Q-Tk=c^0U{nZ21Me4!oq3Yr4k?PTEUOh%VR$Z#zr@j-z#Tb1t z&0bjs&9OF(?#6eWyG;1h}y#wAQon3u31VNt^82}=@66V@keO87Ei zTf&ZnT?v;H?j<}(c$n}w;rE2+2`>{~8{acV7*$4%G1h1>T8wp!^^D2JRAVFK$Hs}q zxkleYV~KHzvD~=AxXM^z+-^Kzykh*p_}o;>q&3Bv;!Q?VqRC>aYqFafn6gZbOifMA zO)X8WO+8F`rrxH$ropCRrV*x5rb(vHO!G|(O(mw)rZuK@rVXZDroE>9rh}%lrq_vK ziH1Z+V$;NKiGvd-Cr(YAo;WMfpEx&hu`h9D;{L>=iMJA8n29;WEH+Ec5oWnrXV#k& z%!%eCb6vCD+``<++}m7a9%bgu#pdzmN#@z+Ip)vI^UVv*CFULGi{@7ri6zFOv*;}e zmPCuil3{6NX=cf_w6?UhN{6+GX zvt|wVtv1u2{df z-mu=b-n0H_{n`49^`-TV^_>mch%Lw#YpZKZwWZk{Hn+`d`_PtUYh!C~>tX9@>t!pn zeQFzRE4GcZO|(t3&9wP#b8Y3eO}4|fW43Q>r)+0!=WUm4S8dmAH*I%pFKusZZ_@;6 zFpZ=Ir@fyhOcSMrrAgE3`qG-E6{UTawj=F^9ou#G40{)QANwcv0(*b^F#8z$So?VU zMEhj>RQm#ZiG7K^%)Z>d(*CvmjQxWBvi++4hW)nvp8ZGra|d?Ra=h;daY!68N0dY1 zFgmP`rjF*0mX0=#_Kr@Du8tm#UXH$wd`F>UyknAMies8%hQl}8F~>2_vB0s&vDmTH zQRdj|xSkHvW7D(J3(^;)?@qs#{@NMo)Hq|E24{k^p3~uUI_o<$J z^<5rUrYqa$YV2z2YUb+V%6C!MSl0yCWY;v;OqbvFnQMWo#I?lrrE8mOyKARww`-s4 zfa`15Vb?L&3D-&2&-H87H`o8D{=oVR>hG?9t^R9wq+8>TbsO9X?s{&A+v%?F_PD+7 z2JRN_R_?a$4(`tGuI^Fp$?h5M+3q>+1@1-e#ctnH_XhVa_kQ<5_hI)5_qXoT?z8Tj z?nmw??q}}j?pN+Np7%Ua9=*rmad|wROix2kj;D#InJ3rN+SATc;Q7>3KWk~ z?V+Bro(Y~wo++NWp0%EBp3|P&o>v*68L=7Z8Lcut$rzO}Bja?&#f)nicQc-5yv}&* z1wJqK26;tZiC5;0@ZcZGMIcZ2sU?_Tc#?;-C|?{V)%?{)7@?;Y=b z?<4OM?=$an@5@YWX0yzZnd34iWX{Q4l({&wG_yQ&P3F4HjhUM>w`A_hJe2i$*3ztX zSv#_JXYI>6m~}YoSk^aLm$R;A{g8Dl>uy%RAG020JD*ylh diff --git a/SwiftUIWebView/WebView.swift b/SwiftUIWebView/WebView.swift index bf03fd7..18b9b1a 100644 --- a/SwiftUIWebView/WebView.swift +++ b/SwiftUIWebView/WebView.swift @@ -103,7 +103,7 @@ struct WebView: UIViewRepresentable, WebViewHandlerDelegate { /* An observer that observes 'viewModel.valuePublisher' to get value from TextField and pass that value to web app by calling JavaScript function */ valueSubscriber = parent.viewModel.valuePublisher.receive(on: RunLoop.main).sink(receiveValue: { value in - let javascriptFunction = "valueGotFromIOS('"+value+"')" + let javascriptFunction = "valueGotFromIOS('\(value)')" webView.evaluateJavaScript(javascriptFunction) { (response, error) in if let error = error { print("Error calling javascript:valueGotFromIOS()") From 5db6899543fe030450c5d7a0da6691949db720f7 Mon Sep 17 00:00:00 2001 From: radekzz Date: Wed, 16 Mar 2022 17:07:42 +0100 Subject: [PATCH 8/8] Create README.md --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f993d84 --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# SwiftUIWebView(with messaging) +This project shows how to implement WebView in SwiftUI using WKWebView and UIViewRepresentable. It also shows how to deal with WebView in different purposes. + +**Make a WebView using WKWebView and UIViewRepresentable:** + +Just for ease of use first create a ViewModel, a enum class named _WebViewNavigation_ and another enum named _WebUrlType_. _WebViewNavigation_ is used to navigate WebView forward and backward. _WebUrlType_ defines what type of url should load e.g. `.localUrl` or `.publicUrl`. + +We can use any [UIKit](https://developer.apple.com/documentation/uikit) View into SwiftUI using UIViewRepresentable which is a view wrapper. Since we are going to make a WebView for SwiftUI, first we will create a structure named `WebView` that inherits `UIViewRepresentable` and implements necessary protocols. Then we will create a `Coordinator` inside `WebView` to implement necessary protocols of WKWebView. + +**Load a local** `**.html**` **file or a public website or web app in WebView:** + +In the above `WebView`, inside `Coordinator` class, function `updateUIView` loads the url of local or private website into WebView depending on `WebUrlType`. + + if let url = Bundle.main.url(forResource: “LocalWebsite”, withExtension: “html”, subdirectory: “www”) { + webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent()) + } + +Above lines load a website named `LocalWebsite.html` located inside our iOS project’s “www” directory. I mean it local webpage because it is inside the project file. + +These lines load a public website or web app + + if let url = URL(string: "https://www.example.com") { + webView.load(URLRequest(url: url)) + } + +Get the title of the loaded website + +In `ContentView` use `WebView` as follows + + WebView(url: .localUrl, viewModel: viewModel) + +**Interact between iOS native app and web app through JavaScript’s function** + +**Receive value from web app:** + +Inside `WebView`’s `makeUIView` function we passed a `iOSNative` as the name to the loaded web app so that web app can find our native iOS app through that name to pass value to our native iOS app. See below line: + + configuration.userContentController.add(self.makeCoordinator(), name: “iOSNative”) + +Make an extension to Coordinator to catch value sent from web app like: + +Here [WKScriptMessageHandler](https://developer.apple.com/documentation/webkit/wkscriptmessagehandler) receives all values sent from web app. Here is our web app that is sending those values. This `LocalWebsite.html` is located inside our project’s `www` directory. I created this `.html` file for test purpose, obviously you will work with server hosted web app. + +**Pass value to web app:** + +Since this is a static .html file it can not receive any value from iOS app but your real web app can receive. Just call a JavaScript function from your iOS as follows: + +In my case web app’s JavaScript function’s name is `valueGotFromIOS`. + +**Intercepting web app navigation:** + +To intercept every navigation of web app, just implement following function inside `Coordinator class`. + +**Navigating web app backward, forward and reloading:** + +For backward navigation use + + if webView.canGoBack { + webView.goBack() + } + +For forward navigation use + + if webView.canGoForward { + webView.goForward() + } + +To reload WebView use + + webView.reload() + +Finally build the app in [Xcode](https://developer.apple.com/xcode/)! + +Reference [Md Yamin](https://medium.com/@mdyamin/swiftui-mastering-webview-5790e686833e)