前提・実現したいこと
Swift
でプログラミングをしてiOS用のPDFを読み込むアプリケーションを作っております。
他のアプリ(例えばSafari
やFiles
)などから、PDFのファイルを自分の作っているアプリで開きたいのです。
発生している問題・エラーメッセージ
プログラムの内部に保存したPDFファイルからPDFを表示する方法はなんとかTutorialやウェブでの情報を元に探すことができました。
そして、PDFのファイルを他のアプリケーションで開いた際に「共有」を押すと、自作のアプリが表示されるようにも設定することができました。
しかし、二つの動作をつなげることができず、外部のアプリから「共有」にて送られたPDFファイルを開く方法が分からず困っています。
該当のソースコード
以下のソースコードを作成しました。
ViewController
1import UIKit 2import PDFKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var pdfView: PDFView! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // PDFの表示 11 if appDelegate.pdfUrl != nil{ 12 if let url = appDelegate.pdfUrl{ 13 if let pdfDocument = PDFDocument(url:url) 14 { 15 pdfView.autoScales = true 16 pdfView.document = pdfDocument 17 } 18 } 19 } 20 21 else if let url = Bundle.main.url(forResource: "pdf", withExtension: "pdf") 22 { 23 if let pdfDocument = PDFDocument(url:url) 24 { 25 pdfView.autoScales = true 26 pdfView.document = pdfDocument 27 } 28 } 29}
AppDelegate
1 2 var appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate 3 4 5 func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { 6 print("url: ", url) 7 pdfUrl = url 8 // ここにViewControllerを呼び出すプログラムを入れたいのですが、 9 } 10
試したこと
上記のようにViewControllerとAppDelegateにプログラミングを作成し、二つをどうにか組み合わせようとしたのですが、どうにもAppDelegate.swift
でURL
を取得したものを、上手にViewController.swift
に送って、PDF
として表示することができません。
AppDelegate.swift
にImport PDFKit
などを入れて直接プログラムを書いてみたりもしたのですが、どうもうまくいきません。。。
もしお詳しい方がいらっしゃいましたら、どのように 対処をしたらいいのか、簡単なサンプルコードをつけてご教授いただけますと大変助かります。
追記:
TsukubaDepot様に教えていただきましたサイトにて、URLをAppDelegateとViewControllerで共有できるプログラミングを追加しました。
しかし、AppDelegateから、ViewControllerを呼び出す方法が分からず、結局この共有したURLが上手に利用できずにいます。
追記2:
Swiftプログラミンはずぶの素人のため、少しずつ少しずつ勉強しておりましたら、バージョンがどんどん変わっていってしまっていて、もう、あとの、func application ()...
も反応しなくなってしまいました。いろいろと調べたのですが、結局、共有されたファイルを受け取るURLも取得することもできません。どなたか、他のアプリからのファイルを共有したときに、せめてファイル名を取得できる方法をご教授いただけますと幸いです。
https://www.dcom-web.co.jp/lab/swift/custom_url_scheme
を読んで、下記のものに書き換えてみたりもしたのですが、そもそも、下記が呼ばれていないようなのです。。。
swift
1func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { 2 // 起動後の処理 3 let alert = UIAlertController(title: "タイトル", message: "アラートのメッセージです。", preferredStyle: .alert) 4 alert.addAction(UIAlertAction(title: "OK", style: .default)) 5 viewController.present(alert, animated: true, completion: nil) 6 return true 7}
以下のウェブサイトも関係しているのかな、と思いましたが、素人故、あまりよく分かりませんでした。。。
https://dev.classmethod.jp/articles/deprecated-openurl/
回答1件
あなたの回答
tips
プレビュー