diff --git a/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayApi.kt b/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayApi.kt index 84a6436..11a134c 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayApi.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayApi.kt @@ -90,6 +90,7 @@ class GatewayApi() { val message: String, val phoneNumbers: List, val simNumber: Int? = null, + val withDeliveryReport: Boolean? = null, ) data class RecipientState( diff --git a/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayModule.kt b/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayModule.kt index 1d7c735..743a09b 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayModule.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/gateway/GatewayModule.kt @@ -152,7 +152,8 @@ class GatewayModule( it.message, it.phoneNumbers, Message.Source.Gateway, - it.simNumber?.let { it - 1 } + it.simNumber?.let { it - 1 }, + it.withDeliveryReport ) } catch (th: Throwable) { th.printStackTrace() diff --git a/app/src/main/java/me/capcom/smsgateway/modules/localserver/WebService.kt b/app/src/main/java/me/capcom/smsgateway/modules/localserver/WebService.kt index 297dbbf..e273d73 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/localserver/WebService.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/localserver/WebService.kt @@ -113,7 +113,8 @@ class WebService : Service() { request.message, request.phoneNumbers, Message.Source.Local, - request.simNumber?.let { it - 1 } + request.simNumber?.let { it - 1 }, + request.withDeliveryReport ) } catch (e: IllegalArgumentException) { return@post call.respond( diff --git a/app/src/main/java/me/capcom/smsgateway/modules/localserver/domain/PostMessageRequest.kt b/app/src/main/java/me/capcom/smsgateway/modules/localserver/domain/PostMessageRequest.kt index e69cea2..94f7b9b 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/localserver/domain/PostMessageRequest.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/localserver/domain/PostMessageRequest.kt @@ -5,4 +5,5 @@ data class PostMessageRequest( val message: String, val phoneNumbers: List, val simNumber: Int? = null, + val withDeliveryReport: Boolean? = null, ) \ No newline at end of file diff --git a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt index b987de8..e6fbd44 100644 --- a/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt +++ b/app/src/main/java/me/capcom/smsgateway/modules/messages/MessagesService.kt @@ -34,7 +34,8 @@ class MessagesService( text: String, recipients: List, source: Message.Source, - simNumber: Int? = null, + simNumber: Int?, + withDeliveryReport: Boolean? ): MessageWithRecipients { val id = id ?: NanoIdUtils.randomNanoId() @@ -73,7 +74,8 @@ class MessagesService( text, message.recipients.filter { it.state == Message.State.Pending } .map { it.phoneNumber }, - simNumber + simNumber, + withDeliveryReport ?: true ) } catch (e: Exception) { e.printStackTrace() @@ -156,7 +158,8 @@ class MessagesService( id: String, message: String, recipients: List, - simNumber: Int? + simNumber: Int?, + withDeliveryReport: Boolean ) { val smsManager: SmsManager = getSmsManager(simNumber) @@ -172,17 +175,20 @@ class MessagesService( ), PendingIntent.FLAG_IMMUTABLE ) - val deliveredIntent = PendingIntent.getBroadcast( - context, - 0, - Intent( - EventsReceiver.ACTION_DELIVERED, - Uri.parse("$id|$it"), + val deliveredIntent = when (withDeliveryReport) { + false -> null + true -> PendingIntent.getBroadcast( context, - EventsReceiver::class.java - ), - PendingIntent.FLAG_IMMUTABLE - ) + 0, + Intent( + EventsReceiver.ACTION_DELIVERED, + Uri.parse("$id|$it"), + context, + EventsReceiver::class.java + ), + PendingIntent.FLAG_IMMUTABLE + ) + } try { val parts = smsManager.divideMessage(message) @@ -193,7 +199,7 @@ class MessagesService( null, parts, ArrayList(parts.map { sentIntent }), - ArrayList(parts.map { deliveredIntent }) + deliveredIntent?.let { ArrayList(parts.map { deliveredIntent }) } ) } else { smsManager.sendTextMessage(it, null, message, sentIntent, deliveredIntent) diff --git a/docs/api/swagger.json b/docs/api/swagger.json index e2c92ce..2d56893 100644 --- a/docs/api/swagger.json +++ b/docs/api/swagger.json @@ -204,6 +204,11 @@ "description": "*(cloud-only)* message storage time in `Pending` state, `null` - forever", "minimum": 5, "example": 86400 + }, + "withDeliveryReport": { + "type": "boolean", + "description": "request delivery report", + "default": true } }, "required": [