Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
b94142f
feat(apple): deliver background push through APNs from Push
ArnabChatterjee20k Oct 9, 2026
82270a3
test(apple): cover APNs environment, deduplication, payloads and the …
ArnabChatterjee20k Oct 9, 2026
1cdf99d
fix(apple): receive APNs pushes before the subscription connects
ArnabChatterjee20k Oct 9, 2026
d40d835
fix(apple): let the app's notification delegate present Appwrite pushes
ArnabChatterjee20k Oct 9, 2026
7cf442f
fix(apple): call the app's remote-notification method for Appwrite pu…
ArnabChatterjee20k Oct 9, 2026
bb5a08c
fix(apple): skip subscribers for topics unsubscribed during registration
ArnabChatterjee20k Oct 9, 2026
fa20712
fix(apple): send the environment and bundle id when updating the push…
ArnabChatterjee20k Oct 9, 2026
082617d
fix(apple): proxy the class a SwiftUI app delegate forwards to
ArnabChatterjee20k Oct 12, 2026
c6eb525
fix(apple): build the Push APNs code on Linux
ArnabChatterjee20k Oct 12, 2026
695e1ba
fix(apple): link a topic again when it returns during its unlink
ArnabChatterjee20k Oct 12, 2026
c040a8a
fix(apple): read the wake appwrite/appwrite#14302 sends, and register…
ArnabChatterjee20k Oct 12, 2026
1e324ed
feat(apple): deliver push through a Notification Service Extension
ArnabChatterjee20k Oct 13, 2026
3a476bf
fix(apple): send the project header when registering the APNs device
ArnabChatterjee20k Oct 13, 2026
38edf62
fix(apple): send the project header when registering the APNs device
ArnabChatterjee20k Oct 13, 2026
af361e7
fix(apple): fetch when an app that just closed left no banner to replace
ArnabChatterjee20k Oct 13, 2026
8a4de0a
fix(apple): drop queued messages the app already delivered
ArnabChatterjee20k Oct 13, 2026
bba786a
fix(apple): keep the extension's Push outside an async lock
ArnabChatterjee20k Oct 13, 2026
0565e9a
fix(apple): lock shared push state across the app and extension, and …
ArnabChatterjee20k Oct 13, 2026
6a5f51b
Merge pull request #2012 from appwrite/feat/apple-push-service-extension
ArnabChatterjee20k Oct 13, 2026
3850cf5
fix(apple): link topics without the generated Messaging service
ArnabChatterjee20k Oct 13, 2026
600c6fa
fix(apple): stop APNs pushes to the device once no background subscri…
ArnabChatterjee20k Oct 13, 2026
670778b
fix(apple): no banner for data-only messages
ArnabChatterjee20k Oct 13, 2026
3d4978b
fix(apple): clear placeholders the extension couldn't fill
ArnabChatterjee20k Oct 13, 2026
4ffc977
fix(apple): keep the APNs target while another Push of the user still…
ArnabChatterjee20k Oct 13, 2026
a975856
fix(apple): clear a placeholder only once its topics are subscribed
ArnabChatterjee20k Oct 13, 2026
337f44b
fix(apple): leave a placeholder unmarked when the extension has no se…
ArnabChatterjee20k Oct 13, 2026
275a593
fix(apple): show a notification for raw payloads and envelopes with t…
ArnabChatterjee20k Oct 13, 2026
c99a01a
feat(apple): unlink background topics a later launch no longer subscr…
ArnabChatterjee20k Oct 13, 2026
76d7170
fix(apple): reconcile launches without background subscriptions, and …
ArnabChatterjee20k Oct 13, 2026
d38eecf
Merge pull request #2022 from appwrite/feat/apple-push-reconcile-topics
ArnabChatterjee20k Oct 13, 2026
966125e
fix(apple): register the device again when a target delete races a ne…
ArnabChatterjee20k Oct 13, 2026
d1ea34c
fix(apple): don't take a live app's session over from the extension
ArnabChatterjee20k Oct 14, 2026
e009314
fix(apple): clear placeholders for topics no subscription claims
ArnabChatterjee20k Oct 14, 2026
0004316
fix(apple): don't register the device again for a Push with no backgr…
ArnabChatterjee20k Oct 14, 2026
0d9a67f
fix(apple): say why a placeholder stays when the App Group is missing
ArnabChatterjee20k Oct 14, 2026
cb2f91c
docs(apple): put Deliveries' doc comment back on Deliveries
ArnabChatterjee20k Oct 14, 2026
2e4e62a
fix(apple): clear dropped placeholders when a launch has no backgroun…
ArnabChatterjee20k Oct 14, 2026
99a3bfb
fix(apple): blame the entitlement only when APNs registration says so
ArnabChatterjee20k Oct 14, 2026
79e9b4b
fix(apple): register into the target the server keeps, and report the…
ArnabChatterjee20k Oct 14, 2026
ea709e6
Merge branch 'feat/apple-push-apns' into feat/apple-push-edge-fixes
ArnabChatterjee20k Oct 14, 2026
4911c2a
fix(swift): ask for gzip so compressed responses decode
ArnabChatterjee20k Oct 14, 2026
ba86eb1
Merge pull request #2025 from appwrite/fix/swift-request-gzip
ArnabChatterjee20k Oct 14, 2026
5700d17
Merge pull request #2024 from appwrite/feat/apple-push-edge-fixes
ArnabChatterjee20k Oct 14, 2026
c23ea4a
fix(apple): start the reconcile only once the broker has the subscrip…
ArnabChatterjee20k Oct 14, 2026
b65d739
fix(apple): start the reconcile only from a confirmed subscription
ArnabChatterjee20k Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/SDK/Language/Apple.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ public function getFiles(): array
'destination' => '/Tests/{{ spec.info.title | caseUcfirst}}Tests/Tests.swift',
'template' => 'swift/Tests/Tests.swift.twig',
],
[
'scope' => 'default',
'destination' => '/Tests/{{ spec.info.title | caseUcfirst}}Tests/PushTests.swift',
'template' => 'apple/Tests/PushTests.swift.twig',
],
[
'scope' => 'default',
'destination' => '/Sources/{{ spec.info.title | caseUcfirst}}/Models/{{ spec.info.title | caseUcfirst}}Error.swift',
Expand Down Expand Up @@ -256,6 +261,11 @@ public function getFiles(): array
'destination' => '/Sources/{{ spec.info.title | caseUcfirst}}/Services/Push.swift',
'template' => '/apple/Sources/Services/Push.swift.twig',
],
[
'scope' => 'default',
'destination' => '/Sources/{{ spec.info.title | caseUcfirst}}/Services/PushServiceExtension.swift',
'template' => '/apple/Sources/Services/PushServiceExtension.swift.twig',
],
[
'scope' => 'default',
'destination' => '/Sources/{{ spec.info.title | caseUcfirst}}/WebSockets/HTTPHandler.swift',
Expand Down
5 changes: 5 additions & 0 deletions templates/apple/Sources/Client.swift.twig
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,11 @@ open class Client {
for (key, value) in self.headers.merging(headers, uniquingKeysWith: { $1 }) {
request.headers.add(name: key, value: value)
}
// NIO asks for "deflate, gzip" unless told otherwise, and some servers answer deflate with a raw
// stream it can't inflate. gzip is decoded the same everywhere.
if compression, !request.headers.contains(name: "accept-encoding") {
request.headers.add(name: "accept-encoding", value: "gzip")
}

request.addDomainCookies()

Expand Down
Loading
Loading