mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 12:07:55 +00:00
Notifications Enabled (#760)
* Notifications Enabled with default static text notifications enabled with default static text code improvement added the share key * added the changelog * notification ID is added to the json only if it exists * renamed Bundle.mainApp to app and updated the strings from localazy * made a struct for the APNSPayload * APNS Payload fix
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// Copyright 2023 New Vector Ltd
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
struct APSAlert: Encodable {
|
||||
let locKey: String
|
||||
let locArgs: [String]
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case locKey = "loc-key"
|
||||
case locArgs = "loc-args"
|
||||
}
|
||||
}
|
||||
|
||||
struct APSInfo: Encodable {
|
||||
let mutableContent: Int
|
||||
let alert: APSAlert
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case mutableContent = "mutable-content"
|
||||
case alert
|
||||
}
|
||||
}
|
||||
|
||||
struct APNSPayload: Encodable {
|
||||
let aps: APSInfo
|
||||
let pusherNotificationClientIdentifier: String?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case aps
|
||||
case pusherNotificationClientIdentifier = "pusher_notification_client_identifier"
|
||||
}
|
||||
}
|
||||
@@ -84,24 +84,20 @@ class NotificationManager: NSObject, NotificationManagerProtocol {
|
||||
|
||||
private func setPusher(with deviceToken: Data, clientProxy: ClientProxyProtocol) async -> Bool {
|
||||
do {
|
||||
let defaultPayload = [
|
||||
"aps": [
|
||||
"mutable-content": 1,
|
||||
"alert": [
|
||||
"loc-key": "Notification",
|
||||
"loc-args": []
|
||||
]
|
||||
]
|
||||
]
|
||||
let configuration = await PusherConfiguration(identifiers: .init(pushkey: deviceToken.base64EncodedString(),
|
||||
appId: ServiceLocator.shared.settings.pusherAppId),
|
||||
kind: .http(data: .init(url: ServiceLocator.shared.settings.pushGatewayBaseURL.absoluteString,
|
||||
format: .eventIdOnly,
|
||||
defaultPayload: defaultPayload.jsonString)),
|
||||
appDisplayName: "\(InfoPlistReader.main.bundleDisplayName) (iOS)",
|
||||
deviceDisplayName: UIDevice.current.name,
|
||||
profileTag: pusherProfileTag(),
|
||||
lang: Bundle.preferredLanguages.first ?? "en")
|
||||
let defaultPayload = APNSPayload(aps: APSInfo(mutableContent: 1,
|
||||
alert: APSAlert(locKey: "Notification",
|
||||
locArgs: [])),
|
||||
pusherNotificationClientIdentifier: clientProxy.restorationToken?.pusherNotificationClientIdentifier)
|
||||
|
||||
let configuration = try await PusherConfiguration(identifiers: .init(pushkey: deviceToken.base64EncodedString(),
|
||||
appId: ServiceLocator.shared.settings.pusherAppId),
|
||||
kind: .http(data: .init(url: ServiceLocator.shared.settings.pushGatewayBaseURL.absoluteString,
|
||||
format: .eventIdOnly,
|
||||
defaultPayload: defaultPayload.toJsonString())),
|
||||
appDisplayName: "\(InfoPlistReader.main.bundleDisplayName) (iOS)",
|
||||
deviceDisplayName: UIDevice.current.name,
|
||||
profileTag: pusherProfileTag(),
|
||||
lang: Bundle.preferredLanguages.first ?? "en")
|
||||
try await clientProxy.setPusher(with: configuration)
|
||||
MXLog.info("[NotificationManager] set pusher succeeded")
|
||||
return true
|
||||
|
||||
@@ -21,6 +21,7 @@ enum NotificationConstants {
|
||||
static let roomIdentifier = "room_id"
|
||||
static let eventIdentifier = "event_id"
|
||||
static let unreadCount = "unread_count"
|
||||
static let pusherNotificationClientIdentifier = "pusher_notification_client_identifier"
|
||||
}
|
||||
|
||||
enum Category {
|
||||
|
||||
@@ -52,15 +52,15 @@ struct NotificationItemProxy {
|
||||
// }
|
||||
|
||||
var title: String {
|
||||
"Title"
|
||||
InfoPlistReader(bundle: .app).bundleDisplayName
|
||||
}
|
||||
|
||||
var subtitle: String? {
|
||||
nil
|
||||
L10n.notification
|
||||
}
|
||||
|
||||
var isNoisy: Bool {
|
||||
true
|
||||
false
|
||||
}
|
||||
|
||||
var avatarURL: URL? {
|
||||
|
||||
@@ -26,12 +26,6 @@ class NotificationServiceProxy: NotificationServiceProxyProtocol {
|
||||
}
|
||||
|
||||
func notificationItem(roomId: String, eventId: String) async throws -> NotificationItemProxy? {
|
||||
nil
|
||||
// try await Task.dispatch(on: .global()) {
|
||||
// guard let item = try self.service.getNotificationItem(roomId: roomId, eventId: eventId) else {
|
||||
// return nil
|
||||
// }
|
||||
// return .init(notificationItem: item)
|
||||
// }
|
||||
NotificationItemProxy()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user