
ããã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã䜿çšããäžè¬çãªæ¹æ³ã§ããããã¢ããªã±ãŒã·ã§ã³ã§ãã¡ã€ã«ãéãããã®ãã¡ã€ã«ãããã«åŠçããããã«å¥ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããå¿ èŠããããŸãã ããšãã°ã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
ã¯ã©ã¹ã«ãšã³ããªãã€ã³ããäœæããå¿ èŠããããŸãã ããã§ã¯ããã¡ã€ã«ã®åŠçå 容ã«å¿ããŠè¡åããå¿ èŠããããŸãã 衚瀺ããã«ã¯ãã«ã¹ã¿ã ã¬ã³ãã©ãŒãäœæããå¿ èŠãããå ŽåããããŸãã ãŸãã¯ãè¿œå ã®ãã©ãããã©ãŒã æ©èœãå¿ èŠãªãå Žåã¯ãå ±éã®ãããžã§ã¯ãã§ãã¹ãŠãå®è¡ã§ããŸãã
翻蚳ããŠããã ãããããšãããããŸãã

ãªãœãŒã¹XamDev.ruããã³ãœãŒã·ã£ã«ãããã¯ãŒã¯ã®ã³ãã¥ããã£ãXamarin DevelopersãããªãŒãããŠããŸãïŒ VK ã Facebook ã Telegram ã