ã¢ããªã±ãŒã·ã§ã³éã§ãã¡ã€ã«ã転éããããšã¯ãOSã®ç¹å®ã®æ©èœã§ãã ãããŠãããã¯Xamarin.Formsã§ããããšããªãã®ãæåã§ãã å®éã«ã¯éåžžã«ç°¡åã§ãããã®æçš¿ã§ã¯ããã®æ©èœãååŸããŠiOSã§å®è¡ããæ¹æ³ã瀺ããŸãïŒæ¬¡ã®æçš¿ã§ã¯ãAndroidã®å Žåãšãå¿
èŠã«å¿ããŠUWPã«ã€ããŠèª¬æããŸãïŒã

ããã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã䜿çšããäžè¬çãªæ¹æ³ã§ããããã¢ããªã±ãŒã·ã§ã³ã§ãã¡ã€ã«ãéãããã®ãã¡ã€ã«ãããã«åŠçããããã«å¥ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããå¿
èŠããããŸãã ããšãã°ãPDFãã¡ã€ã«ãéããå¥ã®ã¢ããªã±ãŒã·ã§ã³ã§ãã®ãã¡ã€ã«ã«å€æŽãå ããå¿
èŠããããŸãã ãã®PDFãã¡ã€ã«ãã¿ãããããšãç»é¢ã«ãéããã¡ãã¥ãŒã衚瀺ããããã®ãã¡ã€ã«ã奜ã¿ã®ã¢ããªã±ãŒã·ã§ã³ã«ã€ã³ããŒãã§ããŸãã
ãã®æçš¿ã§ã¯ããœãªã¥ãŒã·ã§ã³ã®Formsãã©ã°ã¡ã³ããžã®iOSçšã¢ããªã±ãŒã·ã§ã³ã®æ¡åŒµæ©èœã®äœæã«ã€ããŠã¯èª¬æããŸããããã®ããããŠãŒã¶ãŒã[å
±æ]ãã¿ã³ïŒããããåºãç¢å°ã®ä»ããå°ããªé·æ¹åœ¢ïŒãã¿ãããããšã¢ããªã±ãŒã·ã§ã³ã衚瀺ãããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³éã§ã®ã³ã³ãã³ãã®äº€æã§ã¯ãªãããã¡ã€ã«ãFormsã¢ããªã±ãŒã·ã§ã³ã«è»¢éããããšãæ€èšããŸãã
ã¹ã¯ãªãã
ãã®æçš¿ã®äŸã¯ãPDFãã¡ã€ã«ãéããŠWebViewã«è¡šç€ºã§ããããã«ç»é²ãããXamarin.Formsã¢ããªã±ãŒã·ã§ã³ã§ãã ããã§ã¯ãiOSããããã£ãŠXamarin.FormsïŒããã¯Androidã«ãé©çšãããŸãïŒã®ç»é²ã®åºæ¬ã«ã€ããŠèª¬æããŸãã
iOSç»é²
Formsã¢ããªã±ãŒã·ã§ã³ãç»é²ããããšèšããšããããã¯ãããã®ã¹ã¯ãªãŒã³ã·ã§ããã®ããã«æ©èœããããšãæå³ããŸãã Safariã§ã¯ãPDFãã¡ã€ã«ã®ããããŒãžãéããŸãã

ã¢ããªã±ãŒã·ã§ã³ã¯ãOpenFormsããšåŒã°ããæåã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ãiOSã¯ã¯ã€ãã¯ã³ãã³ããOpen In OpenFormsãã䜿çšããŠãã¡ã€ã«ãçŽæ¥éãæ©èœãæäŸããŸãã
2çªç®ã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ãã詳现ãã¡ãã¥ãŒãã¿ãããããšããŠã£ã³ããŠã衚瀺ãããäžéšã«ã¢ã¯ã·ã§ã³ã®ãªã¹ãã衚瀺ãããŸãã ããã«ã¯ãç®çã®ã¢ããªã±ãŒã·ã§ã³ã®ã·ã§ãŒãã«ããã衚瀺ãããŸãã
Info.plist
iOSã§ãã®ã¢ããªã±ãŒã·ã§ã³ãPDFãã¡ã€ã«ãåŠçã§ããããšãç解ããã«ã¯ãInfo.plistãã¡ã€ã«ã調æŽããå¿
èŠããããŸãã æ°ãããããã¬ãã«ããŒãè¿œå ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãXamarin Studioã®çµã¿èŸŒã¿ãšãã£ã¿ãŒã䜿çšããããçŽæ¥ç·šéããŸãã
Xamarin Studioã䜿çšããã«ã¯ãInfo.Plistãããã«ã¯ãªãã¯ããŠãçµã¿èŸŒã¿ãšãã£ã¿ãŒãéããŸãã ç»é¢äžéšã®ã詳现ãã¿ããéžæããŸãã æäžéšã®[ããã¥ã¡ã³ãã¿ã€ã]ã»ã¯ã·ã§ã³ã§ã[ããã¥ã¡ã³ãã¿ã€ãã®è¿œå ]ãã¿ã³ãã¯ãªãã¯ããŸãã ããã«ããã以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã®ããã«ã»ã¯ã·ã§ã³ãè¿œå ãããŸãã

ããã¯ããªãããããåããããã«å¿
èŠãªæ¹æ³ã§ãã
åå ïŒä»»æã®ååã åŸã§åç
§ããããã«å¿
èŠã«ãªããŸãã
ã¿ã€ã ïŒããã¯ç¹å®ã®æååã®é
åã«ãªããŸãã 詳现ã«ã€ããŠã¯ã以äžãã芧ãã ããã
ã¢ã€ã³ã³ ïŒã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã®ã·ã§ãŒãã«ããã§ã¯ãªãã[ãã®ä»]ã¡ãã¥ãŒã«è¡šç€ºãããã·ã§ãŒãã«ããã®å Žæã ç¹°ãè¿ããŸãããè€æ°ã®ã·ã§ãŒãã«ãããããå Žåãããã¯æååã®é
åã«ãªããŸãã
ãã®æ¹æ³ã§å
¥åãããšãInfo.plistãå€æŽãããã¢ããªã±ãŒã·ã§ã³ãç»é²ããŠä»ã®çš®é¡ã®ãã¡ã€ã«ãéãããšãã§ããŸãã ããããããã§ã¯ãInfo.plistã®å€æŽç¹ãç解ããããã«ããã詳现ã«ç解ãã䟡å€ããããŸãã ãã®ãã¡ã€ã«ã«è¿œå ã®ããŒãè¿œå ã§ããããšãããããŸãããããã¯IDEã§åžžã«å®è¡ã§ãããšã¯éããŸããã
ç®çã®ã¿ã€ãã®ãã¡ã€ã«ã®ãªãŒãã³ãç»é²ããããã«äœ¿çšãããèŸæžå
šäœã以äžã«ç€ºããŸãã
<key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>PDF</string> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>LSHandlerRank</key> <string>Alternate</string> <key>LSItemContentTypes</key> <array> <string>com.adobe.pdf</string> </array> </dict> </array>
CFBundleDocumentTypes
æäžäœã®ãã£ã¯ã·ã§ããªã®ããŒãããã«ã¯ä»ã®ãã£ã¯ã·ã§ããªãªããžã§ã¯ãã®é
åãå«ãŸããŸãã
CFBundleTypeName
ã ãã®ããŒã«ã¯ãã¿ã€ããåç
§ããããã¥ã¡ã³ãã¿ã€ãã®ååãå«ãŸããŠããŸããCFBundleTypeRole
ã ãã®ããŒã«ãããOSã¯ãã®ã¿ã€ãã®ãã¡ã€ã«ãåŠçããã¢ããªã±ãŒã·ã§ã³ã決å®ã§ããŸãã ç¹å®ã®å Žåãããã¯ãã¥ãŒã¢ã§ããLSHandlerRank
ãã¡ã€ã«ã¿ã€ãã«å¯Ÿããã¢ããªã±ãŒã·ã§ã³ã®éèŠåºŠã¬ãã«ãå®çŸ©ããŸãã Microsoft Wordã¯ãWordãã¡ã€ã«ã®ããã©ã«ãã§ãã ã¢ããªã±ãŒã·ã§ã³ã¯ã代æ¿ãã«èšå®ãããŠããŸããLSItemContentTypes
ã æååã®é
åã ããã¯ãã¢ããªã±ãŒã·ã§ã³ãéãããšãã§ãããã¡ã€ã«ã®çš®é¡ãå®çŸ©ããŸãã
LSItemContentTypes
ãé€ãããã¹ãŠãéåžžã«åçŽ
LSItemContentTypes
ã ãããã®å€ã¯ã©ãã§å
¥æã§ããŸããïŒ ãã®ç®çã®ããã«ãUniform Type IdentifierããããŸãã ããã¯ããã¡ã€ã«ã¿ã€ããèå¥ããæååã§ãã å
¬çã«ç»é²ãããæååã®ãªã¹ãã¯ã
ãã® Appleããã¥ã¡ã³ã
ããŒãžã«ãããŸã ã
ããã§ãiOSããéãã®ãåŸ
ã£ãŠãããã¡ã€ã«ãããããšãã¢ããªã±ãŒã·ã§ã³ã«ç¥ãããæ¹æ³ãç解ããå¿
èŠããããŸãã
ãªãŒãã³iOSã€ãã³ããžã®å¿ç
誰ãããã®ã¢ããªã±ãŒã·ã§ã³ãéžæããŠPDFãã¡ã€ã«ãéããšã次ã®é¢æ°ãåŒã³åºãããŸãã
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
iOSã¯ããã®ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠéããããã¡ã€ã«ããã¢ããªã±ãŒã·ã§ã³ãã¢ã¯ã»ã¹ãã
NSUrl url
ãã©ã¡ãŒã¿ãŒã䜿çšããŠæå®ããããªããžããªã«
NSUrl url
ãŸãã 次ã«ããã®ãã¡ã€ã«ãXamarin.Formsã§åŠçããå¿
èŠããããŸãã
AppDelegateã¯æ¬¡ã®ããã«ãªããŸãã
App mainForms; public override bool FinishedLaunching(UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init(); mainForms = new App(); LoadApplication(mainForms); return base.FinishedLaunching(app, options); } public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { mainForms.DisplayThePDF(url.Path); return true; }
ããã€ãã®ç°åžžãªç¬éããããŸãã æåã«ã
mainForms
ã®
App
ã¯ã©ã¹ã®ããŒã«ã«å€æ°Xamarin.Forms mainFormsãä¿åãããŸãã åŸã§PDFã衚瀺ããããã®ãšã³ããªãã€ã³ããšããŠå¿
èŠã«ãªããŸãã
ãŸãã
OpenUrl
é¢æ°ã§ã¯ã
OpenUrl
å€æ°ã®
DisplayPDF()
é¢æ°ã
mainForms
ã ããã«ãããPDFãXamarin.Formsã«è¡šç€ºãããŸãã çæ³çã«ã¯ãå Žæãã¯ãªã¢ããã«ã¯ãPDFãã³ããŒããurlãã©ã¡ãŒã¿ãŒã§æå®ããããœãŒã¹ãåé€ããå¿
èŠããããŸãã ãããããã®å Žåã¯ããã§ã¯ãããŸããã
Xamarin.FormsïŒ
ç§ã¯iOSããã®ã«ã¹ã¿ãã€ãºã«ã€ããŠå€ãã®æéãè²»ãããŸããã ãã ããå®éã®ãããžã§ã¯ãã§äœæ¥ãéå§ããå ŽåãiOSã®äžéšã¯åœ¢åŒã«ãããŸããã å®éã®äœæ¥ã¯ãXamarin.Formsããå§ãŸããŸããåä¿¡ãã¡ã€ã«ãåŠçããæ¹æ³ã§ãã ãããè¡ããã
ã«ãXamarin Webãµã€ãã§èŠã€ããèšäºã®PDF衚瀺ã«ã³ã¡ã³ããæ®ããŸã
ã ã ããã¯ãã¬ã³ãã©ãŒã®ã»ããã¢ããã«é¢ãããã®ã§ãã
次ã«ããã©ãŒã ãœãªã¥ãŒã·ã§ã³ãžã®ãšã³ããªãã€ã³ãã«çŠç¹ãåœãŠãããšæããŸãã
App.xaml.cs
ãã¡ã€ã«ãŸãã¯
App
ã¯ã©ã¹ïŒAppDelegateãã¢ã¯ã»ã¹ã§ããã¯ã©ã¹ïŒã«ã¯ãiOSãããžã§ã¯ããšFormsãããžã§ã¯ãéã®çžäºäœçšãå®çŸ©ããé¢æ°ããããŸãã
public void DisplayThePDF(string url) { var openFilePage = new OpenFilesPage(url);; _navigationRoot.Navigation.PushModalAsync(new NavigationPage(openFilePage)); }
ãã®é¢æ°ã¯ãæ°ããXamarin.FormsããŒãžãäœæããããã«ãã¡ã€ã«ã®å Žæã転éããããŒãžãã¢ãŒãã«ã«è¡šç€ºããŸãïŒ
App
ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯ããã¹ãŠã
NavigationPage
ãã¹ãããã
_navigationRoot
å€æ°ã«æ ŒçŽãããŸãïŒã
ã¢ãŒãã«ã§è¡šç€ºãããã®ã§ãã¢ããªã±ãŒã·ã§ã³ã§çºçããä»ã®ãã¹ãŠã®äžã«è¡šç€ºãããããã²ãŒã·ã§ã³ã¹ã¿ãã¯ã«åœ±é¿ãäžããŸããïŒäžã«è¡šç€ºããããã®ãé€ãïŒã ãã¡ããããªãªãšã³ããŒã·ã§ã³ã¯PDFãã¡ã€ã«ã衚瀺ããããšã§ãã å®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³èªäœã®ç¶æ
ã確èªããå¿
èŠããããŸã-çŸåšè¡šç€ºãããŠãããã®ïŒã¢ãŒãã«ãŠã£ã³ããŠã®ã¹ã¿ãã¯ããªãããã«ïŒã ã¢ããªã±ãŒã·ã§ã³ã¯ãŒã¯ãããŒã§ã¯ãã¹ã¿ãã¯å
šäœãéããŠæåããããçŽãããã¿ãã䜿çšããŠããå Žåã¯æ°ããã¿ãã«åãæ¿ããå¿
èŠããããŸãã
OpenFilesPage
ã¯ãåãã©ãããã©ãŒã çšã®ã«ã¹ã¿ã ã¬ã³ãã©ãŒãåãã
WebView
ãµãã¯ã©ã¹ããããŸãã ãã®ã¯ã©ã¹ã«ã¯ã衚瀺ãããã¡ã€ã«ã®å Žæã®ããããã£ããããŸãã 次ã«ãã«ã¹ã¿ã ã¬ã³ãã©ãŒãããã衚瀺ããŸãã
ã«ã¹ã¿ã ã¬ã³ãã©ãŒã§ãã¡ã€ã«ã衚瀺ãããšãiOSã®ç¹å®ã®ãã¡ã€ã«ã®å Žæãžã®åãæ¿ããåé¿ã§ããŸãã ããããããããã®ç¹å®ã®ã·ããªãªã§ã®ã¿ã§ãã éèŠãªãã€ã³ãã¯ãiOSãããžã§ã¯ãã«ã¢ã¯ã»ã¹ããããã®ãšã³ããªãã€ã³ãã§ã®Appã¯ã©ã¹ã®å¿
èŠæ§ã§ãã
ãŸãšã
äžè¬ã«ãXamarin.Formsã¢ããªã±ãŒã·ã§ã³ã®äžéšã®ã¢ããªã±ãŒã·ã§ã³ãããã¡ã€ã«ãéãããšã¯ããã»ã©é£ãããããŸããã ããã€ãã®åœ¢åŒãããããã®1ã€ã¯ãInfo.plistãã¡ã€ã«ã調æŽããŠãç¹å®ã®ã¿ã€ãã®ãã¡ã€ã«ãåŠçã§ããã¢ããªã±ãŒã·ã§ã³ãšããŠç»é²ããããšã§ãã ãŸããiOSã¢ããªã±ãŒã·ã§ã³ã®
OpenUrl
é¢æ°ãæžãæããå¿
èŠããããŸãã
ãã®åŸã¯ããã¹ãŠXamarin.Formsã«äŸåããŸãã iOS AppDelegateãã³ãŒãã®ãå
±éãéšåã«ã¢ã¯ã»ã¹ã§ããããã«ã
App
ã¯ã©ã¹ã«ãšã³ããªãã€ã³ããäœæããå¿
èŠããããŸãã ããã§ã¯ããã¡ã€ã«ã®åŠçå
容ã«å¿ããŠè¡åããå¿
èŠããããŸãã 衚瀺ããã«ã¯ãã«ã¹ã¿ã ã¬ã³ãã©ãŒãäœæããå¿
èŠãããå ŽåããããŸãã ãŸãã¯ãè¿œå ã®ãã©ãããã©ãŒã æ©èœãå¿
èŠãªãå Žåã¯ãå
±éã®ãããžã§ã¯ãã§ãã¹ãŠãå®è¡ã§ããŸãã
翻蚳ããŠããã ãããããšãããããŸãã
ã¢ã¬ã¯ãµã³ããŒã»ã¢ã¬ã¯ã·ãŒãšã-Xamarin-developerãããªãŒã©ã³ãµãŒã 2012幎ãã.NETãã©ãããã©ãŒã ã䜿çšããŠããŸãã 圌ã¯ãã£ã¬ã³ãã®èª¿éèªååã·ã¹ãã ã®éçºã«åå ããŸããã 2015幎以æ¥ã圌ã¯ããªãŒã©ã³ã¹ã«å
¥ããXamarinã䜿çšããã¢ãã€ã«éçºã«åãæ¿ããŸããã çŸåšãiOSã¢ããªã±ãŒã·ã§ã³ã§StecPointã§äœæ¥ããŠããŸãã
ãªãœãŒã¹
XamDev.ruããã³ãœãŒã·ã£ã«ãããã¯ãŒã¯ã®ã³ãã¥ããã£ãXamarin DevelopersãããªãŒãããŠããŸãïŒ
VK ã
Facebook ã
Telegram ã