react-native-sdk-pianoio 0.2.2 → 0.2.3

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 +33 -111
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,162 +2,84 @@
2
2
 
3
3
  Lo scopo di questo pacchetto npm è quello di avere la possibilità di interagire con i metodi messi a disposizione dalle SDK di Piano sia di iOS che di Android, così da avere un unico pacchetto da installare nel momento in cui si vuole utilizzare Piano.io.
4
4
 
5
+ Il tutto deve essere compatibile con la version **Expo SDK51** ed è su questa versione che sono stati effettuati i test.
6
+
5
7
  Il progetto è ancora in **work in progress**.
6
8
 
7
9
  ## Indice
8
10
 
9
11
  - [Installazione](#installazione)
10
- - [Expo](#expo)
11
- - [Adattamento del pacchetto a expo < 52](#adattamento-del-pacchetto-a-expo--52)
12
- - [React native](#react-native)
12
+ - [Prerequisiti (adattamento del pacchetto a Expo < 52)](#prerequisiti-adattamento-del-pacchetto-a-expo--52)
13
+ - [iOS](#ios)
14
+ - [Android](#android)
15
+ - [Avviare progetto](#avviare-progetto)
13
16
  - [Utilizzo](#utilizzo)
14
17
  - [Importazione](#importazione)
15
18
  - [Creazione del Composer](#creazione-del-composer)
16
19
  - [Metodi del Composer](#metodi-del-composer)
20
+ - [`addTag(tag: string)`](#addtagtag-string)
21
+ - [`addTags(tags: string[])`](#addtagstags-string)
22
+ - [`setZoneId(zoneId: string)`](#setzoneidzoneid-string)
23
+ - [`setReferrer(referrer: string)`](#setreferrerreferrer-string)
24
+ - [`setUrl(url: string)`](#seturlurl-string)
25
+ - [`setCustomVariable(name: string, value: string)`](#setcustomvariablename-string-value-string)
26
+ - [`setUserToken(token: string)`](#setusertokentoken-string)
27
+ - [`toString()`](#tostring)
17
28
  - [Metodi statici](#metodi-statici)
29
+ - [`PianoComposer.create(aid: string): Promise<PianoComposer>`](#pianocomposercreateaid-string-promisepianocomposer)
30
+ - [`PianoComposer.isInitialized(): Promise<boolean>`](#pianocomposerisinitialized-promiseboolean)
31
+ - [`PianoComposer.getComposerFromSdkIOS(): Promise<Object>`](#pianocomposergetcomposerfromsdkios-promiseobject)
18
32
  - [Esempio completo](#esempio-completo)
19
33
  <!-- - [Contributing](#contributing)
20
34
  - [License](#license) -->
21
35
 
22
36
  ## Installazione
23
37
 
24
- ### Expo
25
-
26
- #### Installazione di Expo
38
+ ### Prerequisiti (adattamento del pacchetto a Expo < 52)
27
39
 
28
40
  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
41
 
30
42
  Una volta effettuato questo è possibile installare questo pacchetto all'interno del progetto.
31
43
 
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
44
+ Bisogna rendere come prima cosa il progetto in expo predisposto all'utilizzo di moduli nativi, per farlo c'è il seguente comando:
39
45
 
40
46
  ```sh
41
- npx expo run:ios
47
+ npx expo prebuild
42
48
  ```
49
+ Questo creerà la cartella per iOS e per Android.
43
50
 
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:
51
+ Dopodiché si può passare all'installazione del pacchetto npm:
47
52
 
48
53
  ```sh
49
- npx expo start
54
+ npm install react-native-sdk-pianoio
50
55
  ```
51
56
 
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:
57
+ ### iOS
63
58
 
64
- ```sh
65
- npx expo run:ios
66
- ```
67
-
68
- Dovrebbe comparire una serie di errori simili a questo:
59
+ Nel progetto di react native entrare nella cartella per ios ed installare le dipendenze:
69
60
 
70
61
  ```sh
71
- ❌ (node_modules/react-native-sdk-pianoio/ios/generated/RNSdkPianoioSpec/RNSdkPianoioSpec.h:72:18)
72
-
73
- 70 | @interface NativeSdkPianoioSpecBase : NSObject {
74
- 71 | @protected
75
- > 72 | facebook::react::EventEmitterCallback _eventEmitterCallback;
76
- | ^ no type named 'EventEmitterCallback' in namespace 'facebook::react'
77
- 73 | }
78
- 74 | - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
79
- 75 |
80
- ```
81
-
82
- I file causanti di questi errori sono:
83
-
84
- - RNSdkPianoioSpec.h
85
- - RNSdkPianoioSpec-generated.mm
86
-
87
- Quindi, cliccare sulla referenza del file e andare alla linea dell'errore.
88
-
89
- #### Modifica del file RNSdkPianoioSpec.h
90
-
91
- ```
92
- @interface NativeSdkPianoioSpecBase : NSObject {
93
- @protected
94
- facebook::react::EventEmitterCallback _eventEmitterCallback;
95
- }
96
- - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *) eventEmitterCallbackWrapper;
97
-
98
- @end
99
- ```
100
-
101
- Sostituire il codice sovrastante con:
102
-
103
- ```
104
- @interface NativeSdkPianoioSpecBase : NSObject {
105
- @protected
106
- void *_eventEmitterCallback;
107
- }
108
- - (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
109
-
110
- @end
111
- ```
112
-
113
- #### Modifica del file RNSdkPianoioSpec.h
114
-
115
- ```
116
- @implementation NativeSdkPianoioSpecBase
117
-
118
-
119
- - (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
120
- {
121
- _eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
122
- }
123
- @end
124
- ```
125
-
126
- Sostituire il codice sovrastante con:
127
-
128
- ```
129
- @implementation NativeSdkPianoioSpecBase
130
-
131
- - (void)setEventEmitterCallback:(void *)eventEmitterCallbackWrapper;
132
- {
133
- _eventEmitterCallback = std::move(eventEmitterCallbackWrapper);
134
- }
135
- @end
62
+ pod install
136
63
  ```
137
64
 
138
- ### React native
65
+ ### Android
139
66
 
140
- Nel progetto di react native eseguire:
67
+ Nel progetto di react native entrare nella cartella per android e [...]
141
68
 
142
69
  ```sh
143
- npm install react-native-sdk-pianoio
70
+ work in progress
144
71
  ```
145
72
 
146
- #### iOS
73
+ #### Avviare progetto
147
74
 
148
- Nel progetto di react native entrare nella cartella per ios ed installare le dipendenze:
75
+ In seguito si può far partire il progetto, tramite il comando:
149
76
 
150
77
  ```sh
151
- pod install
78
+ npx expo run:ios
152
79
  ```
153
80
 
154
- #### Android
155
-
156
- Nel progetto di react native entrare nella cartella per android e [...]
81
+ **Importante:** non usare ExpoGo per il progetto, potrebbe causare errori.
157
82
 
158
- ```sh
159
- work in progress
160
- ```
161
83
 
162
84
  ## Utilizzo
163
85
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-sdk-pianoio",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Piano io sdk integration",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",