react-native-push-signal 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/PushSignal.podspec +2 -12
- package/README.md +1 -3
- package/README.ru.md +1 -3
- package/android/build.gradle +1 -62
- package/android/consumer-rules.pro +3 -3
- package/android/src/main/AndroidManifest.xml +2 -2
- package/android/src/main/java/com/pushsignal/PushModels.kt +15 -0
- package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalCenter.kt +2 -3
- package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalInitProvider.kt +1 -1
- package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalMessagingService.kt +1 -1
- package/android/src/main/java/com/pushsignal/PushSignalModule.kt +88 -0
- package/android/src/main/java/com/pushsignal/PushSignalPackage.kt +30 -0
- package/ios/PushSignal.h +4 -0
- package/ios/PushSignal.mm +57 -0
- package/ios/PushSignalCenter.h +26 -0
- package/ios/PushSignalCenter.m +608 -0
- package/ios/PushSignalLaunchStore.m +3 -14
- package/lib/module/NativePushSignal.js +5 -0
- package/lib/module/NativePushSignal.js.map +1 -0
- package/lib/module/pushSignal.native.js +33 -7
- package/lib/module/pushSignal.native.js.map +1 -1
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/src/NativePushSignal.d.ts +22 -0
- package/lib/typescript/src/NativePushSignal.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/pushSignal.d.ts +1 -1
- package/lib/typescript/src/pushSignal.d.ts.map +1 -1
- package/lib/typescript/src/pushSignal.native.d.ts +1 -1
- package/lib/typescript/src/pushSignal.native.d.ts.map +1 -1
- package/lib/typescript/src/{PushSignal.nitro.d.ts → types.d.ts} +2 -12
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +14 -19
- package/src/NativePushSignal.ts +25 -0
- package/src/index.tsx +1 -1
- package/src/pushSignal.native.tsx +54 -11
- package/src/pushSignal.tsx +1 -1
- package/src/types.ts +25 -0
- package/android/CMakeLists.txt +0 -24
- package/android/src/main/cpp/cpp-adapter.cpp +0 -11
- package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignal.kt +0 -38
- package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalPackage.kt +0 -22
- package/ios/PushSignal.swift +0 -29
- package/ios/PushSignalCenter.swift +0 -604
- package/lib/module/PushSignal.nitro.js +0 -4
- package/lib/module/PushSignal.nitro.js.map +0 -1
- package/lib/typescript/src/PushSignal.nitro.d.ts.map +0 -1
- package/nitro.json +0 -23
- package/nitrogen/generated/android/c++/JAndroidFirebaseConfig.hpp +0 -70
- package/nitrogen/generated/android/c++/JFunc_void_PushMessage.hpp +0 -80
- package/nitrogen/generated/android/c++/JHybridPushSignalSpec.cpp +0 -114
- package/nitrogen/generated/android/c++/JHybridPushSignalSpec.hpp +0 -66
- package/nitrogen/generated/android/c++/JPushCredentials.hpp +0 -70
- package/nitrogen/generated/android/c++/JPushEnvironment.hpp +0 -58
- package/nitrogen/generated/android/c++/JPushMessage.hpp +0 -84
- package/nitrogen/generated/android/c++/JPushPlatform.hpp +0 -58
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/AndroidFirebaseConfig.kt +0 -66
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/Func_void_PushMessage.kt +0 -78
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/HybridPushSignalSpec.kt +0 -79
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushCredentials.kt +0 -61
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushEnvironment.kt +0 -23
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushMessage.kt +0 -66
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushPlatform.kt +0 -23
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/pushsignalOnLoad.kt +0 -35
- package/nitrogen/generated/android/pushsignal+autolinking.cmake +0 -81
- package/nitrogen/generated/android/pushsignal+autolinking.gradle +0 -27
- package/nitrogen/generated/android/pushsignalOnLoad.cpp +0 -56
- package/nitrogen/generated/android/pushsignalOnLoad.hpp +0 -34
- package/nitrogen/generated/ios/PushSignal+autolinking.rb +0 -62
- package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.cpp +0 -65
- package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.hpp +0 -254
- package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Umbrella.hpp +0 -63
- package/nitrogen/generated/ios/PushSignalAutolinking.mm +0 -33
- package/nitrogen/generated/ios/PushSignalAutolinking.swift +0 -26
- package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.hpp +0 -120
- package/nitrogen/generated/ios/swift/AndroidFirebaseConfig.swift +0 -96
- package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_PushCredentials.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_PushMessage.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
- package/nitrogen/generated/ios/swift/HybridPushSignalSpec.swift +0 -58
- package/nitrogen/generated/ios/swift/HybridPushSignalSpec_cxx.swift +0 -196
- package/nitrogen/generated/ios/swift/PushCredentials.swift +0 -45
- package/nitrogen/generated/ios/swift/PushEnvironment.swift +0 -40
- package/nitrogen/generated/ios/swift/PushMessage.swift +0 -97
- package/nitrogen/generated/ios/swift/PushPlatform.swift +0 -40
- package/nitrogen/generated/shared/c++/AndroidFirebaseConfig.hpp +0 -96
- package/nitrogen/generated/shared/c++/HybridPushSignalSpec.cpp +0 -24
- package/nitrogen/generated/shared/c++/HybridPushSignalSpec.hpp +0 -74
- package/nitrogen/generated/shared/c++/PushCredentials.hpp +0 -97
- package/nitrogen/generated/shared/c++/PushEnvironment.hpp +0 -76
- package/nitrogen/generated/shared/c++/PushMessage.hpp +0 -97
- package/nitrogen/generated/shared/c++/PushPlatform.hpp +0 -76
- package/src/PushSignal.nitro.ts +0 -39
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2026
|
|
3
|
+
Copyright (c) 2026 AntonSeagull
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
|
6
6
|
in the Software without restriction, including without limitation the rights
|
package/PushSignal.podspec
CHANGED
|
@@ -13,19 +13,9 @@ Pod::Spec.new do |s|
|
|
|
13
13
|
s.platforms = { :ios => min_ios_version_supported }
|
|
14
14
|
s.source = { :git => "https://antonseagull.com.git", :tag => "#{s.version}" }
|
|
15
15
|
|
|
16
|
-
s.source_files =
|
|
17
|
-
|
|
18
|
-
"ios/**/*.{h,m,mm}",
|
|
19
|
-
"cpp/**/*.{hpp,cpp}",
|
|
20
|
-
]
|
|
21
|
-
s.public_header_files = "ios/**/*.h"
|
|
16
|
+
s.source_files = "ios/**/*.{h,m,mm,cpp}"
|
|
17
|
+
s.private_header_files = "ios/**/*.h"
|
|
22
18
|
s.frameworks = "UIKit", "UserNotifications"
|
|
23
19
|
|
|
24
|
-
s.dependency 'React-jsi'
|
|
25
|
-
s.dependency 'React-callinvoker'
|
|
26
|
-
|
|
27
|
-
load 'nitrogen/generated/ios/PushSignal+autolinking.rb'
|
|
28
|
-
add_nitrogen_files(s)
|
|
29
|
-
|
|
30
20
|
install_modules_dependencies(s)
|
|
31
21
|
end
|
package/README.md
CHANGED
|
@@ -7,11 +7,9 @@ Get device credentials for your server and listen for incoming notifications or
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npm install react-native-push-signal
|
|
10
|
+
npm install react-native-push-signal
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
`react-native-nitro-modules` is required because this library uses [Nitro Modules](https://nitro.margelo.com/).
|
|
14
|
-
|
|
15
13
|
## Usage
|
|
16
14
|
|
|
17
15
|
```ts
|
package/README.ru.md
CHANGED
|
@@ -7,11 +7,9 @@
|
|
|
7
7
|
## Установка
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npm install react-native-push-signal
|
|
10
|
+
npm install react-native-push-signal
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
`react-native-nitro-modules` обязателен: библиотека собрана на [Nitro Modules](https://nitro.margelo.com/).
|
|
14
|
-
|
|
15
13
|
## Использование
|
|
16
14
|
|
|
17
15
|
```ts
|
package/android/build.gradle
CHANGED
|
@@ -25,80 +25,20 @@ buildscript {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
def reactNativeArchitectures() {
|
|
29
|
-
def value = rootProject.getProperties().get("reactNativeArchitectures")
|
|
30
|
-
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
31
|
-
}
|
|
32
28
|
|
|
33
29
|
apply plugin: "com.android.library"
|
|
34
30
|
apply plugin: "kotlin-android"
|
|
35
|
-
apply from: '../nitrogen/generated/android/pushsignal+autolinking.gradle'
|
|
36
31
|
|
|
37
32
|
apply plugin: "com.facebook.react"
|
|
38
33
|
|
|
39
34
|
android {
|
|
40
|
-
namespace "com.
|
|
35
|
+
namespace "com.pushsignal"
|
|
41
36
|
|
|
42
37
|
compileSdkVersion getExtOrDefault("compileSdkVersion")
|
|
43
38
|
|
|
44
39
|
defaultConfig {
|
|
45
40
|
minSdkVersion getExtOrDefault("minSdkVersion")
|
|
46
41
|
consumerProguardFiles "consumer-rules.pro"
|
|
47
|
-
|
|
48
|
-
externalNativeBuild {
|
|
49
|
-
cmake {
|
|
50
|
-
cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
|
|
51
|
-
arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
|
|
52
|
-
abiFilters (*reactNativeArchitectures())
|
|
53
|
-
|
|
54
|
-
buildTypes {
|
|
55
|
-
debug {
|
|
56
|
-
cppFlags "-O1 -g"
|
|
57
|
-
}
|
|
58
|
-
release {
|
|
59
|
-
cppFlags "-O2"
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
externalNativeBuild {
|
|
67
|
-
cmake {
|
|
68
|
-
path "CMakeLists.txt"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
packaging {
|
|
73
|
-
resources {
|
|
74
|
-
excludes += [
|
|
75
|
-
"META-INF",
|
|
76
|
-
"META-INF/**"
|
|
77
|
-
]
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
jniLibs {
|
|
81
|
-
excludes += [
|
|
82
|
-
"**/libc++_shared.so",
|
|
83
|
-
"**/libfbjni.so",
|
|
84
|
-
"**/libjsi.so",
|
|
85
|
-
"**/libfolly_json.so",
|
|
86
|
-
"**/libfolly_runtime.so",
|
|
87
|
-
"**/libglog.so",
|
|
88
|
-
"**/libhermes.so",
|
|
89
|
-
"**/libhermes-executor-debug.so",
|
|
90
|
-
"**/libhermes_executor.so",
|
|
91
|
-
"**/libreactnative.so",
|
|
92
|
-
"**/libreactnativejni.so",
|
|
93
|
-
"**/libturbomodulejsijni.so",
|
|
94
|
-
"**/libreact_nativemodule_core.so",
|
|
95
|
-
"**/libjscexecutor.so"
|
|
96
|
-
]
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
buildFeatures {
|
|
101
|
-
prefab true
|
|
102
42
|
}
|
|
103
43
|
|
|
104
44
|
compileOptions {
|
|
@@ -109,7 +49,6 @@ android {
|
|
|
109
49
|
|
|
110
50
|
dependencies {
|
|
111
51
|
implementation "com.facebook.react:react-android"
|
|
112
|
-
implementation project(":react-native-nitro-modules")
|
|
113
52
|
implementation "androidx.activity:activity-ktx:1.10.1"
|
|
114
53
|
implementation "androidx.core:core-ktx:1.16.0"
|
|
115
54
|
implementation "com.google.firebase:firebase-messaging:24.1.2"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
-keep class com.
|
|
2
|
-
-keep class com.
|
|
3
|
-
-keep class com.
|
|
1
|
+
-keep class com.pushsignal.PushSignalMessagingService { *; }
|
|
2
|
+
-keep class com.pushsignal.PushSignalInitProvider { *; }
|
|
3
|
+
-keep class com.pushsignal.PushSignalCenter { *; }
|
|
4
4
|
-keep class com.google.firebase.messaging.** { *; }
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
<application>
|
|
5
5
|
<provider
|
|
6
|
-
android:name="com.
|
|
6
|
+
android:name="com.pushsignal.PushSignalInitProvider"
|
|
7
7
|
android:authorities="${applicationId}.pushsignal.init"
|
|
8
8
|
android:exported="false" />
|
|
9
9
|
|
|
10
10
|
<service
|
|
11
|
-
android:name="com.
|
|
11
|
+
android:name="com.pushsignal.PushSignalMessagingService"
|
|
12
12
|
android:exported="false">
|
|
13
13
|
<intent-filter>
|
|
14
14
|
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.pushsignal
|
|
2
|
+
|
|
3
|
+
data class PushMessage(
|
|
4
|
+
val id: String?,
|
|
5
|
+
val title: String?,
|
|
6
|
+
val body: String?,
|
|
7
|
+
val data: Map<String, String>,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
data class AndroidFirebaseConfig(
|
|
11
|
+
val project_id: String?,
|
|
12
|
+
val mobilesdk_app_id: String?,
|
|
13
|
+
val current_key: String?,
|
|
14
|
+
val project_number: String?,
|
|
15
|
+
)
|
package/android/src/main/java/com/{margelo/nitro/pushsignal → pushsignal}/PushSignalCenter.kt
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.pushsignal
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
4
|
import android.app.Application
|
|
@@ -13,10 +13,10 @@ import android.os.Handler
|
|
|
13
13
|
import android.os.Looper
|
|
14
14
|
import androidx.activity.ComponentActivity
|
|
15
15
|
import androidx.core.app.NotificationCompat
|
|
16
|
+
import com.google.android.gms.tasks.Tasks
|
|
16
17
|
import com.google.firebase.FirebaseApp
|
|
17
18
|
import com.google.firebase.FirebaseOptions
|
|
18
19
|
import com.google.firebase.messaging.FirebaseMessaging
|
|
19
|
-
import com.google.android.gms.tasks.Tasks
|
|
20
20
|
import com.google.firebase.messaging.RemoteMessage
|
|
21
21
|
import java.util.Collections
|
|
22
22
|
import java.util.UUID
|
|
@@ -142,7 +142,6 @@ internal object PushSignalCenter : Application.ActivityLifecycleCallbacks {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
try {
|
|
145
|
-
// Fire-and-forget: JS only needs the payload.
|
|
146
145
|
callback(message)
|
|
147
146
|
} catch (_: Throwable) {
|
|
148
147
|
// Ignore listener failures.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
package com.pushsignal
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.Promise
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.bridge.ReadableMap
|
|
7
|
+
import com.facebook.react.bridge.WritableMap
|
|
8
|
+
import java.util.concurrent.Executors
|
|
9
|
+
|
|
10
|
+
class PushSignalModule(reactContext: ReactApplicationContext) :
|
|
11
|
+
NativePushSignalSpec(reactContext) {
|
|
12
|
+
|
|
13
|
+
@Volatile
|
|
14
|
+
private var listening = false
|
|
15
|
+
|
|
16
|
+
override fun initialize(config: ReadableMap, promise: Promise) {
|
|
17
|
+
val firebaseConfig = AndroidFirebaseConfig(
|
|
18
|
+
project_id = config.getStringOrNull("project_id"),
|
|
19
|
+
mobilesdk_app_id = config.getStringOrNull("mobilesdk_app_id"),
|
|
20
|
+
current_key = config.getStringOrNull("current_key"),
|
|
21
|
+
project_number = config.getStringOrNull("project_number"),
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
PushSignalCenter.attach(reactApplicationContext)
|
|
25
|
+
PushSignalCenter.initialize(firebaseConfig) { error ->
|
|
26
|
+
if (error == null) {
|
|
27
|
+
promise.resolve(null)
|
|
28
|
+
} else {
|
|
29
|
+
promise.reject("E_INIT", error.message, error)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
override fun getCredentials(promise: Promise) {
|
|
35
|
+
executor.execute {
|
|
36
|
+
try {
|
|
37
|
+
PushSignalCenter.attach(reactApplicationContext)
|
|
38
|
+
val token = PushSignalCenter.fetchToken()
|
|
39
|
+
val result = Arguments.createMap().apply {
|
|
40
|
+
putString("platform", "android_os")
|
|
41
|
+
putString("token", token)
|
|
42
|
+
}
|
|
43
|
+
promise.resolve(result)
|
|
44
|
+
} catch (error: Exception) {
|
|
45
|
+
promise.reject("E_CREDENTIALS", error.message, error)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
override fun startListening() {
|
|
51
|
+
if (listening) {
|
|
52
|
+
return
|
|
53
|
+
}
|
|
54
|
+
listening = true
|
|
55
|
+
|
|
56
|
+
PushSignalCenter.setOnMessage { message ->
|
|
57
|
+
emitOnMessage(message.toWritableMap())
|
|
58
|
+
}
|
|
59
|
+
PushSignalCenter.setOnNotificationPress { message ->
|
|
60
|
+
emitOnNotificationPress(message.toWritableMap())
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
companion object {
|
|
65
|
+
const val NAME = NativePushSignalSpec.NAME
|
|
66
|
+
private val executor = Executors.newSingleThreadExecutor()
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private fun ReadableMap.getStringOrNull(key: String): String? {
|
|
71
|
+
if (!hasKey(key) || isNull(key)) {
|
|
72
|
+
return null
|
|
73
|
+
}
|
|
74
|
+
return getString(key)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private fun PushMessage.toWritableMap(): WritableMap {
|
|
78
|
+
val map = Arguments.createMap()
|
|
79
|
+
id?.let { map.putString("id", it) }
|
|
80
|
+
title?.let { map.putString("title", it) }
|
|
81
|
+
body?.let { map.putString("body", it) }
|
|
82
|
+
val dataMap = Arguments.createMap()
|
|
83
|
+
data.forEach { (key, value) ->
|
|
84
|
+
dataMap.putString(key, value)
|
|
85
|
+
}
|
|
86
|
+
map.putMap("data", dataMap)
|
|
87
|
+
return map
|
|
88
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.pushsignal
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.BaseReactPackage
|
|
4
|
+
import com.facebook.react.bridge.NativeModule
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
|
+
|
|
9
|
+
class PushSignalPackage : BaseReactPackage() {
|
|
10
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
11
|
+
return if (name == PushSignalModule.NAME) {
|
|
12
|
+
PushSignalModule(reactContext)
|
|
13
|
+
} else {
|
|
14
|
+
null
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override fun getReactModuleInfoProvider() = ReactModuleInfoProvider {
|
|
19
|
+
mapOf(
|
|
20
|
+
PushSignalModule.NAME to ReactModuleInfo(
|
|
21
|
+
name = PushSignalModule.NAME,
|
|
22
|
+
className = PushSignalModule.NAME,
|
|
23
|
+
canOverrideExistingModule = false,
|
|
24
|
+
needsEagerInit = false,
|
|
25
|
+
isCxxModule = false,
|
|
26
|
+
isTurboModule = true
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
}
|
package/ios/PushSignal.h
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#import "PushSignal.h"
|
|
2
|
+
#import "PushSignalCenter.h"
|
|
3
|
+
|
|
4
|
+
@implementation PushSignal {
|
|
5
|
+
BOOL _listening;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
- (void)initialize:(NSDictionary *)config
|
|
9
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
10
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
11
|
+
(void)config;
|
|
12
|
+
resolve(nil);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
- (void)getCredentials:(RCTPromiseResolveBlock)resolve
|
|
16
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
17
|
+
[[PushSignalCenter shared] fetchCredentialsWithResolver:^(NSDictionary *credentials) {
|
|
18
|
+
resolve(credentials);
|
|
19
|
+
}
|
|
20
|
+
rejecter:^(NSError *error) {
|
|
21
|
+
reject(@"E_CREDENTIALS", error.localizedDescription, error);
|
|
22
|
+
}];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
- (void)startListening {
|
|
26
|
+
if (_listening) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
_listening = YES;
|
|
30
|
+
|
|
31
|
+
__weak PushSignal *weakSelf = self;
|
|
32
|
+
[[PushSignalCenter shared] setOnMessage:^(NSDictionary *message) {
|
|
33
|
+
PushSignal *strongSelf = weakSelf;
|
|
34
|
+
if (strongSelf == nil) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
[strongSelf emitOnMessage:message];
|
|
38
|
+
}];
|
|
39
|
+
[[PushSignalCenter shared] setOnNotificationPress:^(NSDictionary *message) {
|
|
40
|
+
PushSignal *strongSelf = weakSelf;
|
|
41
|
+
if (strongSelf == nil) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
[strongSelf emitOnNotificationPress:message];
|
|
45
|
+
}];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
49
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
50
|
+
return std::make_shared<facebook::react::NativePushSignalSpecJSI>(params);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
+ (NSString *)moduleName {
|
|
54
|
+
return @"PushSignal";
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import <UserNotifications/UserNotifications.h>
|
|
3
|
+
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
6
|
+
@interface PushSignalCenter : NSObject <UNUserNotificationCenterDelegate>
|
|
7
|
+
|
|
8
|
+
+ (instancetype)shared;
|
|
9
|
+
+ (void)installEarly;
|
|
10
|
+
+ (void)bootstrapWithLaunchOptions:(nullable NSDictionary *)launchOptions;
|
|
11
|
+
|
|
12
|
+
- (void)install;
|
|
13
|
+
- (void)rememberForwardingDelegate:(nullable id<UNUserNotificationCenterDelegate>)delegate;
|
|
14
|
+
|
|
15
|
+
- (void)fetchCredentialsWithResolver:(void (^)(NSDictionary *credentials))resolve
|
|
16
|
+
rejecter:(void (^)(NSError *error))reject;
|
|
17
|
+
|
|
18
|
+
- (void)setOnMessage:(void (^)(NSDictionary *message))callback;
|
|
19
|
+
- (void)setOnNotificationPress:(void (^)(NSDictionary *message))callback;
|
|
20
|
+
|
|
21
|
+
- (void)handleDeviceToken:(NSData *)deviceToken;
|
|
22
|
+
- (void)handleRegistrationError:(NSError *)error;
|
|
23
|
+
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
NS_ASSUME_NONNULL_END
|