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.
Files changed (2) hide show
  1. package/README.md +132 -17
  2. 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
- ### iOS
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
- ### Android
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
- ## API del Composer
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
- ## 🔍 Metodi statici
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
- ## 📋 Esempio completo
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.1.1",
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": {