Goal: ΠΎΠΏΠΈΡΠ°ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°Π³ΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°Π·ΠΈΠ½ΠΎ Π² ΠΌΠ°ΡΠΊΠ΅ΡΠ΅.
ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΡΠΏΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ webview ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π³ΡΠ³Π»ΠΏΠ»Π΅ΠΉ ΠΈ ΠΈΠΎΡ ΠΌΠ°ΡΠΊΠ΅Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π² Π΅Π³ΠΎ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠΈΠΈ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΡΠΏΠ°ΡΡ ΡΡΠ°ΡΠΈΠΊ ΠΈΠ· ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ.
Π ΠΈΡΠΊΠΈ:
- ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π²ΠΈΠ΄ΠΎΠΌ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
- ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π²ΡΡ ΠΈΠ·-Π·Π° Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΈΡΡ webview
- ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ΅Π²ΡΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ googlepay\apple pay.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ appsflyer
ΠΠ»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈΠ΅ΠΉ, ΡΠΎ Π΅ΡΡΡ Ρ utm ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π² ΠΌΠ°ΡΠΊΠ΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ appsflyer sdk. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ·Π½Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ½Π΅ΡΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ app.store/my.app?stag=xxx.
ΠΠ΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈΠ΅ΠΉ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ affiliate tracking, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°Π΄Π°ΡΠ° ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π²Π°ΠΆΠ½Π°.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ firebase
ΠΡΠ»ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΡΡΠ°Π²ΠΈΡ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»Π°ΡΡ Π΅ΠΌΡ push ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ firebase, ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ² firebase Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄, Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΡΡΠ΅ΠΉ. ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ onesignal.
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π°ΠΏΠΈ ΡΡΠ΅ΠΊΠΈΠ½Π³Π° Π²Π΅Π± ΡΠ°ΠΉΡΠ°
Π ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ nextcode Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± Π°ΡΡΠΈΠ±ΡΡΠΈΠΈ Π΄ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π°ΠΏΠΈ Π½Π΅ΠΊΡΡΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΎΠ± Π°ΡΡΠΈΠ±ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ· appsflyer.
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° hot reload
ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΡΡΡ ΠΎΠ±Π΅ΡΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅Π²ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° hot reload, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΆΠ½ΠΎ: ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ flutter ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ²Ρ.
- ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π²Π΅Π±Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ux, ΡΡΠΎΠ±Ρ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ²Π°ΠΉΠΏ Π²Π½ΠΈΠ· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π» ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠ²Π°ΠΉΠΏ Π²Π»Π΅Π²ΠΎ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΉ ΠΈ Ρ.ΠΏ.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΡΠΎΠΌ
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°Π½Π΄ΡΠΎΠΈΠ΄Π°.
- ΠΠ½Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π½ΡΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°ΡΡΠΈΠ±ΡΡΠΈΠΈ (ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΡΠ½Π΅ΡΠ°)
- ΠΠ½Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· Π±ΡΠ°Π·ΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Π΄Π»Ρ ΠΏΡΡΠ΅ΠΉ ΠΏΡΠΈΡΠ΅ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± ΠΈΠ΄ ΠΈΠ³ΡΠΎΠΊΠ° (Π±Π΅Π· ΡΡΠΎΠ³ΠΎ onesignal ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° ΡΡΠΎΡ ΡΠ΅Π»Π΅ΡΠΎΠ½))
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ Π½Π° Android:
import android.webkit.JavascriptInterface;
@JavascriptInterface
public void addEventListener(String event) {
Toast.makeText(mContext, "Event PASSED: " + event, Toast.LENGTH_SHORT).show();
Log.e("WebAppInterface", "Received event: " + event);
// ΠΠ΅ΡΠ΅Π²ΡΡΠΊΠ° Π½Π° null Π°Π±ΠΎ undefined
if (event == null || event.equals("undefined")) {
Log.e("WebAppInterface", "Received null or undefined event");
return;
}
try {
// ΠΠ΅ΡΠ΅Π²ΡΡΡΡΠΌΠΎ, ΡΠΈ Π΄Π°Π½Ρ Ρ Π²Π°Π»ΡΠ΄Π½ΠΈΠΌ JSON-ΡΡΠ΄ΠΊΠΎΠΌ
JSONObject eventObject = new JSONObject(event);
if (eventObject.has("userId")) {
String userId = eventObject.getString("userId");
Log.e("WebAppInterface", "User ID: " + userId);
} else {
Log.e("WebAppInterface", "Event does not contain expected fields.");
}
} catch (JSONException e) {
Log.e("WebAppInterface", "JSON parsing error: " + e.getMessage());
} catch (Exception e) {
Log.e("WebAppInterface", "Unexpected error: " + e.getMessage());
}
}
}
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Web
if (typeof Android == 'undefined') return;
return Android.addEventListener(JSON.stringify({userId:"xxx"}))
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ· Π²Π΅Π± ΡΠ°ΠΉΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΡΠ±ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΅ΡΡΡ ΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°ΠΉΡΠ°:
- ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ userid Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΎΠ±Π΅ΡΡΠΊΡ
- ΠΏΠΎΠ»ΡΡΠΈΡΡ affData ΠΈΠ· ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π΅ΡΡΠΊΠΈ
- ΠΏΠΎΠ»ΡΡΠΈΡΡ fbMessageToken ΠΈΠ· ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π΅ΡΡΠΊΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ onesignal ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ Π² ΠΎΠ±Π΅ΡΡΠΊΡ)
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ customer.io ΠΈ Ρ.ΠΏ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ.
Steps
- ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ios\andorid, firebase, appsflyer, ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
- Π½Π°ΡΡΡΠΎΠΉΠΊΠ° cicd Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ firebase app distribution)
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ nextcode
- ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Timelines
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² Π·Π°ΠΌΠΈΠ½Π°Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° cicd Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ - ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅Π²ΠΎΠΏΡΠΎΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ, ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π±ΠΈΠ»Π΄ Π°Π³Π΅Π½Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΎΠΊ Π½Π° ΠΈΠΎΡ ΠΈ Π°Π½Π΄ΡΠΎΠΈΠ΄. ΠΠ°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ nextcode - ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΡΡΡΠ½Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π΄ΠΎ ΠΌΠ΅ΡΡΡΠ°)