回答編集履歴

2

サンプルコードに.badgeの指定が漏れていたのでコードを修正して説明を追記しました。

2021/08/21 23:54

投稿

TakeOne
TakeOne

スコア6299

test CHANGED
@@ -54,12 +54,10 @@
54
54
 
55
55
 
56
56
 
57
- なお、ターゲットがiOS14以上の場合は、 `.alert` がdeprecatedになっているので、
57
+ なお、ターゲットがiOS14以上の場合は、 `.alert` がdeprecatedになり、代わりに `.banner` と `.list` の2種類を別々に指定するようになっているので、次のようにする必要があります。
58
-
59
- 次のようにする必要があります。
60
58
 
61
59
  ``` swuft
62
60
 
63
- completionHandler([.banner, .sound, .list])
61
+ completionHandler([.badge, .sound, .banner, .list])
64
62
 
65
63
  ```

1

回答追記

2021/08/21 23:54

投稿

TakeOne
TakeOne

スコア6299

test CHANGED
@@ -9,3 +9,57 @@
9
9
  (参考)
10
10
 
11
11
  [https://qiita.com/jollyjoester/items/63991657f0d631383c9b](https://qiita.com/jollyjoester/items/63991657f0d631383c9b)
12
+
13
+
14
+
15
+ --------------------------
16
+
17
+ (8/19 追記)
18
+
19
+
20
+
21
+ 多くの記事がrequestAuthorizationで通知許可を得たタイミングでregisterForRemoteNotificationsを実施しているため、通知許可を得てからregisterForRemoteNotificationsを実施する必要があると認識していましたが、FCMのサンプルはクロージャの外で通知許可を得る前にregisterForRemoteNotificationsを実施していたので、実際の動きを確かめてみたところ、先にregisterForRemoteNotificationsを実施しても問題ないようでした。ただ、順番的には通知許可を得てからregisterForRemoteNotificationsを実施するよう実装した方が無難ではあると思います。
22
+
23
+
24
+
25
+ 他に問題がないかコードを確認してみたところ、もし今問題となっている動作が、「実機にインストール後だと通知が届かない」というよりも、「アプリを画面に表示している状態だと画面上部にバナーが表示されないが
26
+
27
+ アプリを終了またはスタンバイ状態にしているとバナーが表示される」という問題なのであれば、
28
+
29
+
30
+
31
+
32
+
33
+ willPresentのdelegateメソッドの中で
34
+
35
+ ``` swift
36
+
37
+ completionHandler([])
38
+
39
+ ```
40
+
41
+ このようにして通知の種類なしでcompletionHandlerを呼び出しているのが問題の原因だと思います。
42
+
43
+
44
+
45
+ ここは、参考記事で説明されているように
46
+
47
+ ``` swuft
48
+
49
+ completionHandler([.badge, .sound, .alert])
50
+
51
+ ```
52
+
53
+ このようにしないと、アプリを画面に表示している状態でバナーや通知音が出ません。
54
+
55
+
56
+
57
+ なお、ターゲットがiOS14以上の場合は、 `.alert` がdeprecatedになっているので、
58
+
59
+ 次のようにする必要があります。
60
+
61
+ ``` swuft
62
+
63
+ completionHandler([.banner, .sound, .list])
64
+
65
+ ```