teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

small modification

2021/11/11 12:22

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- iOSで他のアプリから「共有」されたファイルのURLをAppDelegateで取得する方法
1
+ iOSで他のアプリから「共有」されたファイルのURLを自分の自作アプリで取得する方法
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
- SwiftでプログラミングをしてiOS用のPDFを読み込むアプリケーションを作っております。
2
+ `Swift`でプログラミングをしてiOS用のPDFを読み込むアプリケーションを作っております。
3
- 他のアプリ(例えばSafari)などから、PDFのファイルを自分の作っているアプリで開きたいのです。
3
+ 他のアプリ(例えば`Safari`や`Files`)などから、PDFのファイルを自分の作っているアプリで開きたいのです。
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
6
  プログラムの内部に保存したPDFファイルからPDFを表示する方法はなんとかTutorialやウェブでの情報を元に探すことができました。

6

タイトル変更

2021/11/11 12:22

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- 他のアプリから「共有」されたファイルをAppDelegate 定義した変数にURLを入れ他のインスタンス(ViewControllerなど)で参照する方法について
1
+ iOSで他のアプリから「共有」されたファイルのURLをAppDelegateで取得する方法
body CHANGED
File without changes

5

更新

2021/11/11 09:57

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
File without changes
body CHANGED
@@ -68,4 +68,21 @@
68
68
 
69
69
  追記:
70
70
  TsukubaDepot様に教えていただきましたサイトにて、URLをAppDelegateとViewControllerで共有できるプログラミングを追加しました。
71
- しかし、AppDelegateから、ViewControllerを呼び出す方法が分からず、結局この共有したURLが上手に利用できずにいます。
71
+ しかし、AppDelegateから、ViewControllerを呼び出す方法が分からず、結局この共有したURLが上手に利用できずにいます。
72
+
73
+
74
+ 追記2:
75
+ Swiftプログラミンはずぶの素人のため、少しずつ少しずつ勉強しておりましたら、バージョンがどんどん変わっていってしまっていて、もう、あとの、`func application ()...`も反応しなくなってしまいました。いろいろと調べたのですが、結局、共有されたファイルを受け取るURLも取得することもできません。どなたか、他のアプリからのファイルを共有したときに、せめてファイル名を取得できる方法をご教授いただけますと幸いです。
76
+
77
+ `https://www.dcom-web.co.jp/lab/swift/custom_url_scheme`を読んで、下記のものに書き換えてみたりもしたのですが、そもそも、下記が呼ばれていないようなのです。。。
78
+ ```swift
79
+ func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
80
+ // 起動後の処理
81
+ let alert = UIAlertController(title: "タイトル", message: "アラートのメッセージです。", preferredStyle: .alert)
82
+ alert.addAction(UIAlertAction(title: "OK", style: .default))
83
+ viewController.present(alert, animated: true, completion: nil)
84
+ return true
85
+ }
86
+ ```
87
+ 以下のウェブサイトも関係しているのかな、と思いましたが、素人故、あまりよく分かりませんでした。。。
88
+ `https://dev.classmethod.jp/articles/deprecated-openurl/`

4

タイトルの明確化

2021/11/11 08:32

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- 他のアプリからファイルを渡してもらって、渡されたファイルを表示する方法
1
+ 他のアプリから「共有」されたファイルをAppDelegate で定義した変数にURLを入れ他のインスタンス(ViewControllerなど)で参照する方法について
body CHANGED
File without changes

3

追記

2020/09/20 02:28

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
File without changes
body CHANGED
@@ -63,4 +63,9 @@
63
63
  ### 試したこと
64
64
  上記のようにViewControllerとAppDelegateにプログラミングを作成し、二つをどうにか組み合わせようとしたのですが、どうにも`AppDelegate.swift`で`URL`を取得したものを、上手に`ViewController.swift`に送って、`PDF`として表示することができません。
65
65
  `AppDelegate.swift`に`Import PDFKit`などを入れて直接プログラムを書いてみたりもしたのですが、どうもうまくいきません。。。
66
- もしお詳しい方がいらっしゃいましたら、どのように 対処をしたらいいのか、簡単なサンプルコードをつけてご教授いただけますと大変助かります。
66
+ もしお詳しい方がいらっしゃいましたら、どのように 対処をしたらいいのか、簡単なサンプルコードをつけてご教授いただけますと大変助かります。
67
+
68
+
69
+ 追記:
70
+ TsukubaDepot様に教えていただきましたサイトにて、URLをAppDelegateとViewControllerで共有できるプログラミングを追加しました。
71
+ しかし、AppDelegateから、ViewControllerを呼び出す方法が分からず、結局この共有したURLが上手に利用できずにいます。

2

微修正

2020/09/20 02:26

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
File without changes
body CHANGED
@@ -48,6 +48,10 @@
48
48
 
49
49
 
50
50
  ```AppDelegate
51
+
52
+ var appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
53
+
54
+
51
55
  func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
52
56
  print("url: ", url)
53
57
  pdfUrl = url

1

質問の明確化

2020/09/20 02:24

投稿

sekiseki_2
sekiseki_2

スコア2

title CHANGED
File without changes
body CHANGED
@@ -17,20 +17,30 @@
17
17
  import PDFKit
18
18
 
19
19
  class ViewController: UIViewController {
20
-
21
20
 
22
21
  @IBOutlet weak var pdfView: PDFView!
23
22
 
24
-
25
23
  override func viewDidLoad() {
26
24
  super.viewDidLoad()
27
25
  // PDFの表示
26
+ if appDelegate.pdfUrl != nil{
28
- if let url = Bundle.main.url(forResource: "pdf", withExtension: "pdf"){
27
+ if let url = appDelegate.pdfUrl{
29
- if let pdfDocument = PDFDocument(url:url){
28
+ if let pdfDocument = PDFDocument(url:url)
29
+ {
30
+ pdfView.autoScales = true
31
+ pdfView.document = pdfDocument
32
+ }
33
+ }
34
+ }
35
+
36
+ else if let url = Bundle.main.url(forResource: "pdf", withExtension: "pdf")
37
+ {
38
+ if let pdfDocument = PDFDocument(url:url)
39
+ {
40
+ pdfView.autoScales = true
30
41
  pdfView.document = pdfDocument
31
- }
42
+ }
32
43
  }
33
- }
34
44
  }
35
45
  ```
36
46
 
@@ -39,16 +49,11 @@
39
49
 
40
50
  ```AppDelegate
41
51
  func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
42
- print("url: ", url)
52
+ print("url: ", url)
43
- do {
44
- let data = try Data(contentsOf: url)
53
+ pdfUrl = url
45
- // ここに上記のurl使いPDFを表示プログラムを書きたいのです
54
+ // ここにViewController呼び出すプログラムを入れたいのですが、
46
- } catch {
47
- print("Unable to load data: (error)")
48
- }
49
- return true
50
- }
51
55
  }
56
+
52
57
  ```
53
58
 
54
59
  ### 試したこと