@@ -33,6 +33,7 @@ struct ContentView: View {
33
33
Text ( " InstanceID " )
34
34
. font ( . subheadline)
35
35
. fontWeight ( . semibold)
36
+
36
37
Text ( identity. instanceID ?? " None " ) . foregroundColor ( . green)
37
38
}
38
39
@@ -55,68 +56,142 @@ struct ContentView: View {
55
56
Text ( " Topic " )
56
57
. fontWeight ( . semibold)
57
58
}
58
- }
59
- . navigationBarTitle ( " Firebase Messaging " )
60
- . foregroundColor ( . blue)
61
59
62
- // MARK: Action buttons
60
+ // MARK: Action buttons
63
61
64
- Button ( action: getToken) {
65
- HStack {
66
- Image ( systemName: " arrow.clockwise.circle.fill " ) . font ( . body)
67
- Text ( " Get ID and Token " )
62
+ VStack ( alignment: . leading) {
63
+ Text ( " getToken " )
68
64
. fontWeight ( . semibold)
69
- }
70
- }
65
+ HStack {
66
+ Button ( action: getIDAndToken) {
67
+ HStack {
68
+ Image ( systemName: " arrow.clockwise.circle.fill " )
69
+ Text ( " IID.ID " )
70
+ . fontWeight ( . semibold)
71
+ }
72
+ }
73
+ Button ( action: getToken) {
74
+ HStack {
75
+ Image ( systemName: " arrow.clockwise.circle.fill " )
76
+ Text ( " IID " )
77
+ . fontWeight ( . semibold)
78
+ }
79
+ }
80
+ Button ( action: getFCMToken) {
81
+ HStack {
82
+ Image ( systemName: " arrow.clockwise.circle.fill " ) . font ( . body)
83
+ Text ( " FM " )
84
+ . fontWeight ( . semibold)
85
+ }
86
+ }
87
+ }
88
+ } . font ( . system( size: 14 ) )
71
89
72
- Button ( action: deleteToken) {
73
- HStack {
74
- Image ( systemName: " trash.fill " ) . font ( . body)
75
- Text ( " Delete Token " )
90
+ VStack ( alignment: . leading) {
91
+ Text ( " deleteToken " )
76
92
. fontWeight ( . semibold)
77
- }
78
- }
93
+ HStack {
94
+ Button ( action: deleteToken) {
95
+ HStack {
96
+ Image ( systemName: " trash.fill " )
97
+ Text ( " IID " )
98
+ . fontWeight ( . semibold)
99
+ }
100
+ }
101
+ Button ( action: deleteFCMToken) {
102
+ HStack {
103
+ Image ( systemName: " trash.fill " )
104
+ Text ( " FM " )
105
+ . fontWeight ( . semibold)
106
+ }
107
+ }
108
+ }
109
+ } . font ( . system( size: 14 ) )
79
110
80
- Button ( action: deleteID) {
81
- HStack {
82
- Image ( systemName: " trash.fill " ) . font ( . body)
83
- Text ( " Delete ID " )
111
+ VStack ( alignment: . leading) {
112
+ Text ( " delete " )
84
113
. fontWeight ( . semibold)
85
- }
114
+ HStack {
115
+ Button ( action: deleteID) {
116
+ HStack {
117
+ Image ( systemName: " trash.fill " )
118
+ Text ( " IID " )
119
+ . fontWeight ( . bold)
120
+ }
121
+ }
122
+ Button ( action: deleteFCM) {
123
+ HStack {
124
+ Image ( systemName: " trash.fill " )
125
+ Text ( " FM " )
126
+ . fontWeight ( . semibold)
127
+ }
128
+ }
129
+ Button ( action: deleteFID) {
130
+ HStack {
131
+ Image ( systemName: " trash.fill " )
132
+ Text ( " FIS " )
133
+ . fontWeight ( . semibold)
134
+ }
135
+ }
136
+ }
137
+ } . font ( . system( size: 14 ) )
138
+ Text ( " \( log) " )
139
+ . lineLimit ( 10 )
140
+ . multilineTextAlignment ( . leading)
86
141
}
142
+ . navigationBarTitle ( " Firebase Messaging " )
87
143
88
- Button ( action: deleteFID) {
89
- HStack {
90
- Image ( systemName: " trash.fill " ) . font ( . body)
91
- Text ( " Delete FID " )
92
- . fontWeight ( . semibold)
93
- }
94
- }
95
- Text ( " \( log) " )
96
- . lineLimit ( 10 )
97
- . multilineTextAlignment ( . leading)
98
144
} . buttonStyle ( IdentityButtonStyle ( ) )
99
145
}
100
146
}
101
147
102
- func getToken ( ) {
148
+ func getIDAndToken ( ) {
103
149
InstanceID . instanceID ( ) . instanceID { result, error in
104
150
guard let result = result, error == nil else {
105
151
self . log = " Failed getting iid and token: \( String ( describing: error) ) "
106
152
return
107
153
}
108
154
self . identity. token = result. token
109
155
self . identity. instanceID = result. instanceID
110
- self . log = " Successfully got token. "
156
+ self . log = " Successfully got iid and token. "
111
157
}
112
158
}
113
159
114
- func deleteToken ( ) {
160
+ func getToken ( ) {
115
161
guard let app = FirebaseApp . app ( ) else {
116
162
return
117
163
}
118
164
let senderID = app. options. gcmSenderID
119
- Messaging . messaging ( ) . deleteFCMToken ( forSenderID: senderID) { error in
165
+ var options : [ String : Any ] = [ : ]
166
+ if Messaging . messaging ( ) . apnsToken == nil {
167
+ log = " There's no APNS token available at the moment. "
168
+ return
169
+ }
170
+ options = [ " apns_token " : Messaging . messaging ( ) . apnsToken as Any ]
171
+ InstanceID . instanceID ( )
172
+ . token ( withAuthorizedEntity: senderID, scope: " * " , options: options) { token, error in
173
+ guard let token = token, error == nil else {
174
+ self . log = " Failed getting token: \( String ( describing: error) ) "
175
+ return
176
+ }
177
+ self . identity. token = token
178
+ self . log = " Successfully got token. "
179
+ }
180
+ }
181
+
182
+ func getFCMToken( ) {
183
+ Messaging . messaging ( ) . token { token, error in
184
+ guard let token = token, error == nil else {
185
+ self . log = " Failed getting iid and token: \( String ( describing: error) ) "
186
+ return
187
+ }
188
+ self . identity. token = token
189
+ self . log = " Successfully got token. "
190
+ }
191
+ }
192
+
193
+ func deleteFCMToken( ) {
194
+ Messaging . messaging ( ) . deleteToken { error in
120
195
if let error = error as NSError ? {
121
196
self . log = " Failed deleting token: \( error) "
122
197
return
@@ -125,6 +200,16 @@ struct ContentView: View {
125
200
}
126
201
}
127
202
203
+ func deleteToken( ) {
204
+ guard let app = FirebaseApp . app ( ) else {
205
+ return
206
+ }
207
+ let senderID = app. options. gcmSenderID
208
+ InstanceID . instanceID ( )
209
+ . deleteToken ( withAuthorizedEntity: senderID, scope: " * " ) { error in
210
+ }
211
+ }
212
+
128
213
func deleteID( ) {
129
214
InstanceID . instanceID ( ) . deleteID { error in
130
215
if let error = error as NSError ? {
@@ -135,6 +220,16 @@ struct ContentView: View {
135
220
}
136
221
}
137
222
223
+ func deleteFCM( ) {
224
+ Messaging . messaging ( ) . deleteData { error in
225
+ if let error = error as NSError ? {
226
+ self . log = " Failed deleting Messaging: \( error) "
227
+ return
228
+ }
229
+ self . log = " Successfully deleted Messaging data. "
230
+ }
231
+ }
232
+
138
233
func deleteFID( ) {
139
234
Installations . installations ( ) . delete { error in
140
235
if let error = error as NSError ? {
@@ -199,7 +294,7 @@ struct ContentView_Previews: PreviewProvider {
199
294
struct IdentityButtonStyle : ButtonStyle {
200
295
func makeBody( configuration: Self . Configuration ) -> some View {
201
296
configuration. label
202
- . frame ( minWidth: 0 , maxWidth: 200 )
297
+ . frame ( minWidth: 0 , maxWidth: 60 )
203
298
. padding ( )
204
299
. foregroundColor ( . white)
205
300
. background ( Color . yellow)
0 commit comments