react-native-sdk-pianoio 0.1.1 → 0.2.1
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/README.md +132 -17
- package/package.json +2 -1
package/README.md
CHANGED
@@ -4,8 +4,135 @@ Lo scopo di questo pacchetto npm è quello di avere la possibilità di interagir
|
|
4
4
|
|
5
5
|
Il progetto è ancora in **work in progress**.
|
6
6
|
|
7
|
+
## Indice
|
8
|
+
|
9
|
+
- [Installazione](#installazione)
|
10
|
+
- [Expo](#expo)
|
11
|
+
- [Adattamento del pacchetto a expo < 52](#adattamento-del-pacchetto-a-expo--52)
|
12
|
+
- [React native](#react-native)
|
13
|
+
- [Utilizzo](#utilizzo)
|
14
|
+
- [Importazione](#importazione)
|
15
|
+
- [Creazione del Composer](#creazione-del-composer)
|
16
|
+
- [Metodi del Composer](#metodi-del-composer)
|
17
|
+
- [Metodi statici](#metodi-statici)
|
18
|
+
- [Esempio completo](#esempio-completo)
|
19
|
+
<!-- - [Contributing](#contributing)
|
20
|
+
- [License](#license) -->
|
21
|
+
|
7
22
|
## Installazione
|
8
23
|
|
24
|
+
### Expo
|
25
|
+
|
26
|
+
#### Installazione di Expo
|
27
|
+
|
28
|
+
Seguendo la guida presente al link https://docs.expo.dev/get-started/create-a-project/ è possibile effettuare la creazione di un progetto in expo.
|
29
|
+
|
30
|
+
Una volta effettuato questo è possibile installare questo pacchetto all'interno del progetto.
|
31
|
+
|
32
|
+
Per installare il pacchetto all'interno del progetto, bisogna fare come prima cosa, l'installazione del pacchetto npm:
|
33
|
+
|
34
|
+
```sh
|
35
|
+
npm install react-native-sdk-pianoio
|
36
|
+
```
|
37
|
+
|
38
|
+
In seguito effettuare la dev build così da permettere l'utilizzo dell'SDK
|
39
|
+
|
40
|
+
```sh
|
41
|
+
npx expo run:ios
|
42
|
+
```
|
43
|
+
|
44
|
+
Con il comando verrà creata la cartella relativa di ios, che **non** sarà necessario toccare in nessun modo.
|
45
|
+
|
46
|
+
In seguito si può far partire il progetto, tramite il comando:
|
47
|
+
|
48
|
+
```sh
|
49
|
+
npx expo start
|
50
|
+
```
|
51
|
+
|
52
|
+
### Adattamento del pacchetto a Expo < 52
|
53
|
+
|
54
|
+
Con l’introduzione della versione Expo SDK 52, il team di Expo ha adottato la **New Architecture** di React Native, che introduce importanti novità come i TurboModules, il Codegen e un nuovo sistema di gestione degli eventi (incluso EventEmitterCallback). Questi cambiamenti migliorano performance, interoperabilità con pacchetti nativi complessi e garantiscono una maggiore compatibilità futura con React Native.
|
55
|
+
|
56
|
+
Tuttavia, questa evoluzione comporta incompatibilità con versioni precedenti (Expo 51 o inferiori), che non includono le definizioni e i meccanismi introdotti dalla nuova architettura.
|
57
|
+
|
58
|
+
Un esempio concreto è l’uso del tipo facebook::react::EventEmitterCallback, che esiste solo all’interno della New Architecture.
|
59
|
+
|
60
|
+
Per far funzionare il pacchetto con versioni precedenti alla 52, è necessario usare un approccio un po' forzato, modificando manualmente il codice generato per evitare riferimenti non supportati.
|
61
|
+
|
62
|
+
Una volta installato il pacchetto e aver eseguito:
|
63
|
+
```sh
|
64
|
+
npx expo run:ios
|
65
|
+
```
|
66
|
+
|
67
|
+
Dovrebbe comparire una serie di errori simili a questo:
|
68
|
+
|
69
|
+
```sh
|
70
|
+
❌ (node_modules/react-native-sdk-pianoio/ios/generated/RNSdkPianoioSpec/RNSdkPianoioSpec.h:72:18)
|
71
|
+
|
72
|
+
70 | @interface NativeSdkPianoioSpecBase : NSObject {
|
73
|
+
71 | @protected
|
74
|
+
> 72 | facebook::react::EventEmitterCallback _eventEmitterCallback;
|
75
|
+
| ^ no type named 'EventEmitterCallback' in namespace 'facebook::react'
|
76
|
+
73 | }
|
77
|
+
74 | - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
|
78
|
+
75 |
|
79
|
+
```
|
80
|
+
|
81
|
+
I file causanti di questi errori sono:
|
82
|
+
- RNSdkPianoioSpec.h
|
83
|
+
- RNSdkPianoioSpec-generated.mm
|
84
|
+
|
85
|
+
Quindi, cliccare sulla referenza del file e andare alla linea dell'errore.
|
86
|
+
|
87
|
+
#### Modifica del file RNSdkPianoioSpec.h
|
88
|
+
|
89
|
+
```
|
90
|
+
@interface NativeSdkPianoioSpecBase : NSObject {
|
91
|
+
@protected
|
92
|
+
facebook::react::EventEmitterCallback _eventEmitterCallback;
|
93
|
+
}
|
94
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
|
95
|
+
|
96
|
+
@end
|
97
|
+
```
|
98
|
+
Sostituire il codice sovrastante con:
|
99
|
+
|
100
|
+
```
|
101
|
+
@interface NativeSdkPianoioSpecBase : NSObject {
|
102
|
+
@protected
|
103
|
+
void *_eventEmitterCallback;
|
104
|
+
}
|
105
|
+
- (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
|
106
|
+
|
107
|
+
@end
|
108
|
+
```
|
109
|
+
|
110
|
+
#### Modifica del file RNSdkPianoioSpec.h
|
111
|
+
|
112
|
+
```
|
113
|
+
@implementation NativeSdkPianoioSpecBase
|
114
|
+
|
115
|
+
|
116
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
|
117
|
+
{
|
118
|
+
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
|
119
|
+
}
|
120
|
+
@end
|
121
|
+
```
|
122
|
+
|
123
|
+
Sostituire il codice sovrastante con:
|
124
|
+
|
125
|
+
```
|
126
|
+
@implementation NativeSdkPianoioSpecBase
|
127
|
+
|
128
|
+
- (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
|
129
|
+
{
|
130
|
+
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper);
|
131
|
+
}
|
132
|
+
@end
|
133
|
+
```
|
134
|
+
|
135
|
+
|
9
136
|
### React native
|
10
137
|
|
11
138
|
Nel progetto di react native eseguire:
|
@@ -14,7 +141,7 @@ Nel progetto di react native eseguire:
|
|
14
141
|
npm install react-native-sdk-pianoio
|
15
142
|
```
|
16
143
|
|
17
|
-
|
144
|
+
#### iOS
|
18
145
|
|
19
146
|
Nel progetto di react native entrare nella cartella per ios ed installare le dipendenze:
|
20
147
|
|
@@ -22,7 +149,7 @@ Nel progetto di react native entrare nella cartella per ios ed installare le dip
|
|
22
149
|
pod install
|
23
150
|
```
|
24
151
|
|
25
|
-
|
152
|
+
#### Android
|
26
153
|
|
27
154
|
Nel progetto di react native entrare nella cartella per android e [...]
|
28
155
|
|
@@ -46,7 +173,7 @@ import PianoComposer from './PianoComposer';
|
|
46
173
|
const composer = await PianoComposer.create('your_aid');
|
47
174
|
```
|
48
175
|
|
49
|
-
##
|
176
|
+
## Metodi del Composer
|
50
177
|
|
51
178
|
### `addTag(tag: string)`
|
52
179
|
|
@@ -118,16 +245,6 @@ await composer.setUserToken('token123');
|
|
118
245
|
|
119
246
|
---
|
120
247
|
|
121
|
-
### `execute()`
|
122
|
-
|
123
|
-
Esegue il Composer dopo la configurazione.
|
124
|
-
|
125
|
-
```ts
|
126
|
-
await composer.execute();
|
127
|
-
```
|
128
|
-
|
129
|
-
---
|
130
|
-
|
131
248
|
### `toString()`
|
132
249
|
|
133
250
|
Restituisce una rappresentazione leggibile dello stato del Composer.
|
@@ -152,7 +269,7 @@ PianoComposer {
|
|
152
269
|
|
153
270
|
---
|
154
271
|
|
155
|
-
##
|
272
|
+
## Metodi statici
|
156
273
|
|
157
274
|
### `PianoComposer.create(aid: string): Promise<PianoComposer>`
|
158
275
|
|
@@ -183,7 +300,7 @@ Recupera i dati correnti dal modulo nativo iOS. Questo oggetto include:
|
|
183
300
|
}
|
184
301
|
```
|
185
302
|
|
186
|
-
##
|
303
|
+
## Esempio completo
|
187
304
|
|
188
305
|
```ts
|
189
306
|
const composer = await PianoComposer.create('YOUR_AID');
|
@@ -195,8 +312,6 @@ await composer.setUrl('https://my.site/article');
|
|
195
312
|
await composer.setUserToken('jwt-token');
|
196
313
|
await composer.setCustomVariable('device', 'mobile');
|
197
314
|
|
198
|
-
await composer.execute();
|
199
|
-
|
200
315
|
console.log(await composer.toString());
|
201
316
|
```
|
202
317
|
|
package/package.json
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-native-sdk-pianoio",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.2.1",
|
4
4
|
"description": "Piano io sdk integration",
|
5
5
|
"source": "./src/index.tsx",
|
6
6
|
"main": "./lib/commonjs/index.js",
|
7
7
|
"module": "./lib/module/index.js",
|
8
|
+
"types": "lib/typescript/module/src/index.d.ts",
|
8
9
|
"exports": {
|
9
10
|
".": {
|
10
11
|
"import": {
|