diff --git a/.pubnub.yml b/.pubnub.yml
index 241c54976..34bab4d59 100644
--- a/.pubnub.yml
+++ b/.pubnub.yml
@@ -1,9 +1,9 @@
name: kotlin
-version: 10.4.3
+version: 10.4.4
schema: 1
scm: github.com/pubnub/kotlin
files:
- - build/libs/pubnub-kotlin-10.4.3-all.jar
+ - build/libs/pubnub-kotlin-10.4.4-all.jar
sdks:
-
type: library
@@ -23,8 +23,8 @@ sdks:
-
distribution-type: library
distribution-repository: maven
- package-name: pubnub-kotlin-10.4.3
- location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.4.3/pubnub-kotlin-10.4.3.jar
+ package-name: pubnub-kotlin-10.4.4
+ location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.4.4/pubnub-kotlin-10.4.4.jar
supported-platforms:
supported-operating-systems:
Android:
@@ -121,6 +121,11 @@ sdks:
license-url: https://www.apache.org/licenses/LICENSE-2.0.txt
is-required: Required
changelog:
+ - date: 2025-03-07
+ version: v10.4.4
+ changes:
+ - type: bug
+ text: "Internal fixes."
- date: 2025-02-28
version: v10.4.3
changes:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 43b8a1311..52c532065 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## v10.4.4
+March 07 2025
+
+#### Fixed
+- Internal fixes.
+
## v10.4.3
February 28 2025
diff --git a/README.md b/README.md
index f98c47366..1997c6696 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@ You will need the publish and subscribe keys to authenticate your app. Get your
com.pubnub
pubnub-kotlin
- 10.4.3
+ 10.4.4
```
diff --git a/gradle.properties b/gradle.properties
index 0b0d5c6c2..39f2b884f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -18,7 +18,7 @@ RELEASE_SIGNING_ENABLED=true
SONATYPE_HOST=DEFAULT
SONATYPE_AUTOMATIC_RELEASE=false
GROUP=com.pubnub
-VERSION_NAME=10.4.3
+VERSION_NAME=10.4.4
POM_PACKAGING=jar
POM_NAME=PubNub SDK
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 52160e2ed..67400f21e 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -13,7 +13,7 @@ dokka = "1.9.20"
kotlinx_datetime = "0.6.1"
kotlinx_coroutines = "1.9.0"
pubnub_js = "8.6.0"
-pubnub_swift = "8.3.0"
+pubnub_swift = "9.0.0"
[libraries]
retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" }
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt
index 11d9fd059..9d9510915 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt
@@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push
import cocoapods.PubNubSwift.KMPPubNub
import cocoapods.PubNubSwift.addChannelsToPushNotificationsWithChannels
-import com.pubnub.api.PubNubException
import com.pubnub.api.enums.PNPushEnvironment
import com.pubnub.api.enums.PNPushType
import com.pubnub.api.models.consumer.push.PNPushAddChannelResult
@@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result
import com.pubnub.kmp.PNFuture
import com.pubnub.kmp.onFailureHandler
import com.pubnub.kmp.onSuccessHandler
-import com.pubnub.kmp.toNSData
import kotlinx.cinterop.ExperimentalForeignApi
-import platform.Foundation.NSData
/**
* @see [PubNub.addPushNotificationsOnChannels]
@@ -30,16 +27,14 @@ class AddChannelsToPushImpl(
private val environment: PNPushEnvironment
) : AddChannelsToPush {
override fun async(callback: Consumer>) {
- deviceId.toNSData()?.let { data: NSData ->
- pubnub.addChannelsToPushNotificationsWithChannels(
- channels = channels,
- deviceId = data,
- pushType = pushType.toParamString(),
- topic = topic.orEmpty(),
- environment = environment.toParamString(),
- onSuccess = callback.onSuccessHandler { PNPushAddChannelResult() },
- onFailure = callback.onFailureHandler()
- )
- } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId")))
+ pubnub.addChannelsToPushNotificationsWithChannels(
+ channels = channels,
+ deviceId = deviceId,
+ pushType = pushType.toParamString(),
+ topic = topic.orEmpty(),
+ environment = environment.toParamString(),
+ onSuccess = callback.onSuccessHandler { PNPushAddChannelResult() },
+ onFailure = callback.onFailureHandler()
+ )
}
}
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt
index ed9eb3ce8..664257858 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt
@@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push
import cocoapods.PubNubSwift.KMPPubNub
import cocoapods.PubNubSwift.listPushChannelsWithDeviceId
-import com.pubnub.api.PubNubException
import com.pubnub.api.enums.PNPushEnvironment
import com.pubnub.api.enums.PNPushType
import com.pubnub.api.models.consumer.push.PNPushListProvisionsResult
@@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result
import com.pubnub.kmp.PNFuture
import com.pubnub.kmp.onFailureHandler
import com.pubnub.kmp.onSuccessHandler
-import com.pubnub.kmp.toNSData
import kotlinx.cinterop.ExperimentalForeignApi
-import platform.Foundation.NSData
/**
* @see [PubNub.auditPushChannelProvisions]
@@ -29,15 +26,17 @@ class ListPushProvisionsImpl(
private val environment: PNPushEnvironment
) : ListPushProvisions {
override fun async(callback: Consumer>) {
- deviceId.toNSData()?.let { data: NSData ->
- pubnub.listPushChannelsWithDeviceId(
- deviceId = data,
- pushType = pushType.toParamString(),
- topic = topic.orEmpty(),
- environment = environment.toParamString(),
- onSuccess = callback.onSuccessHandler { PNPushListProvisionsResult(channels = it?.filterIsInstance() ?: emptyList()) },
- onFailure = callback.onFailureHandler()
- )
- } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId")))
+ pubnub.listPushChannelsWithDeviceId(
+ deviceId = deviceId,
+ pushType = pushType.toParamString(),
+ topic = topic.orEmpty(),
+ environment = environment.toParamString(),
+ onSuccess = callback.onSuccessHandler {
+ PNPushListProvisionsResult(
+ channels = it?.filterIsInstance() ?: emptyList()
+ )
+ },
+ onFailure = callback.onFailureHandler()
+ )
}
}
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt
index 646918755..952a8ade4 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt
@@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push
import cocoapods.PubNubSwift.KMPPubNub
import cocoapods.PubNubSwift.removeAllChannelsFromPushWithPushType
-import com.pubnub.api.PubNubException
import com.pubnub.api.enums.PNPushEnvironment
import com.pubnub.api.enums.PNPushType
import com.pubnub.api.models.consumer.push.PNPushRemoveAllChannelsResult
@@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result
import com.pubnub.kmp.PNFuture
import com.pubnub.kmp.onFailureHandler
import com.pubnub.kmp.onSuccessReturnValue
-import com.pubnub.kmp.toNSData
import kotlinx.cinterop.ExperimentalForeignApi
-import platform.Foundation.NSData
/**
* @see [PubNub.removeAllPushNotificationsFromDeviceWithPushToken]
@@ -29,15 +26,13 @@ class RemoveAllPushChannelsForDeviceImpl(
private val environment: PNPushEnvironment
) : RemoveAllPushChannelsForDevice {
override fun async(callback: Consumer>) {
- deviceId.toNSData()?.let { data: NSData ->
- pubnub.removeAllChannelsFromPushWithPushType(
- pushType = pushType.toParamString(),
- deviceId = data,
- topic = topic.orEmpty(),
- environment = environment.toParamString(),
- onSuccess = callback.onSuccessReturnValue(PNPushRemoveAllChannelsResult()),
- onFailure = callback.onFailureHandler()
- )
- } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId")))
+ pubnub.removeAllChannelsFromPushWithPushType(
+ pushType = pushType.toParamString(),
+ deviceId = deviceId,
+ topic = topic.orEmpty(),
+ environment = environment.toParamString(),
+ onSuccess = callback.onSuccessReturnValue(PNPushRemoveAllChannelsResult()),
+ onFailure = callback.onFailureHandler()
+ )
}
}
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt
index e0f320e59..1e31ef34b 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt
@@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push
import cocoapods.PubNubSwift.KMPPubNub
import cocoapods.PubNubSwift.removeChannelsFromPushWithChannels
-import com.pubnub.api.PubNubException
import com.pubnub.api.enums.PNPushEnvironment
import com.pubnub.api.enums.PNPushType
import com.pubnub.api.models.consumer.push.PNPushRemoveChannelResult
@@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result
import com.pubnub.kmp.PNFuture
import com.pubnub.kmp.onFailureHandler
import com.pubnub.kmp.onSuccessHandler
-import com.pubnub.kmp.toNSData
import kotlinx.cinterop.ExperimentalForeignApi
-import platform.Foundation.NSData
/**
* @see [PubNub.removePushNotificationsFromChannels]
@@ -30,16 +27,14 @@ class RemoveChannelsFromPushImpl(
private val environment: PNPushEnvironment,
) : RemoveChannelsFromPush {
override fun async(callback: Consumer>) {
- deviceId.toNSData()?.let { data: NSData ->
- pubnub.removeChannelsFromPushWithChannels(
- channels = channels,
- deviceId = data,
- pushType = pushType.toParamString(),
- topic = topic.orEmpty(),
- environment = environment.toParamString(),
- onSuccess = callback.onSuccessHandler { PNPushRemoveChannelResult() },
- onFailure = callback.onFailureHandler()
- )
- } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId")))
+ pubnub.removeChannelsFromPushWithChannels(
+ channels = channels,
+ deviceId = deviceId,
+ pushType = pushType.toParamString(),
+ topic = topic.orEmpty(),
+ environment = environment.toParamString(),
+ onSuccess = callback.onSuccessHandler { PNPushRemoveChannelResult() },
+ onFailure = callback.onFailureHandler()
+ )
}
}
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt
index e600c515a..9921ad8da 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt
@@ -14,14 +14,6 @@ import com.pubnub.api.models.consumer.objects.membership.PNChannelMembership
import com.pubnub.api.models.consumer.objects.uuid.PNUUIDMetadata
import com.pubnub.api.utils.PatchValue
import kotlinx.cinterop.ExperimentalForeignApi
-import platform.Foundation.NSData
-import platform.Foundation.NSString
-import platform.Foundation.NSUTF8StringEncoding
-import platform.Foundation.dataUsingEncoding
-
-internal fun String.toNSData(): NSData? {
- return (this as NSString).dataUsingEncoding(NSUTF8StringEncoding)
-}
@OptIn(ExperimentalForeignApi::class)
internal fun createPubNubHashedPage(from: PNPage?): KMPHashedPage {
diff --git a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
index 606370494..04a4550ac 100644
--- a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
+++ b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt
@@ -56,7 +56,7 @@ class PubNubImplTest : BaseTest() {
fun getVersionAndTimeStamp() {
val version = PubNubImpl.SDK_VERSION
val timeStamp = PubNubImpl.timestamp()
- assertEquals("10.4.3", version)
+ assertEquals("10.4.4", version)
assertTrue(timeStamp > 0)
}