Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch @extence/react-native-appmetrica@0.10.1 for the project I'm working on.
Here is the diff that solved my problem:
diff --git a/node_modules/@extence/react-native-appmetrica/android/src/main/java/com/extencereactnativeappmetrica/ReactNativeAppmetricaModule.java b/node_modules/@extence/react-native-appmetrica/android/src/main/java/com/extencereactnativeappmetrica/ReactNativeAppmetricaModule.java
index bb0a935..58b36d7 100644
--- a/node_modules/@extence/react-native-appmetrica/android/src/main/java/com/extencereactnativeappmetrica/ReactNativeAppmetricaModule.java
+++ b/node_modules/@extence/react-native-appmetrica/android/src/main/java/com/extencereactnativeappmetrica/ReactNativeAppmetricaModule.java
@@ -1,7 +1,5 @@
package com.extencereactnativeappmetrica;
-import android.util.Log;
-
import androidx.annotation.NonNull;
import com.facebook.react.bridge.ReactApplicationContext;
@@ -9,9 +7,12 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.module.annotations.ReactModule;
+import com.yandex.metrica.Revenue;
import com.yandex.metrica.YandexMetrica;
import com.yandex.metrica.YandexMetricaConfig;
+import java.util.Currency;
+
@ReactModule(name = ReactNativeAppmetricaModule.NAME)
public class ReactNativeAppmetricaModule extends ReactContextBaseJavaModule {
public static final String NAME = "ReactNativeAppmetrica";
@@ -57,4 +58,16 @@ public class ReactNativeAppmetricaModule extends ReactContextBaseJavaModule {
}
}
+ @ReactMethod
+ public void reportRevenue(ReadableMap attributes) {
+ double price = attributes.getDouble("price");
+ Currency currency = Currency.getInstance(attributes.getString("currency"));
+ Revenue revenue = Revenue
+ .newBuilderWithMicros((long) price, currency)
+ .withQuantity(1)
+ .withProductID(attributes.getString("productID"))
+ .build();
+ YandexMetrica.reportRevenue(revenue);
+ }
+
}
diff --git a/node_modules/@extence/react-native-appmetrica/ios/ReactNativeAppmetrica.mm b/node_modules/@extence/react-native-appmetrica/ios/ReactNativeAppmetrica.mm
index 4afd16c..c85bdb1 100644
--- a/node_modules/@extence/react-native-appmetrica/ios/ReactNativeAppmetrica.mm
+++ b/node_modules/@extence/react-native-appmetrica/ios/ReactNativeAppmetrica.mm
@@ -1,4 +1,5 @@
#import "ReactNativeAppmetrica.h"
+#import "RCTConvert.h"
#ifdef RCT_NEW_ARCH_ENABLED
#import "RNReactNativeAppmetricaSpec.h"
@@ -42,6 +43,30 @@ @implementation ReactNativeAppmetrica
resolve(@"");
}
+RCT_REMAP_METHOD(revenueEvent, withAttributes:(NSDictionary *)attributes)
+{
+
+ NSDecimal price = [RCTConvert NSNumber:[attributes valueForKey:@"price"]].decimalValue;
+ NSString *currency = [RCTConvert NSString:[attributes valueForKey:@"currency"]];
+ NSUInteger quantity = [RCTConvert NSUInteger:[attributes valueForKey:@"quantity"]];
+ NSString *productID = [RCTConvert NSString:[attributes valueForKey:@"productID"]];
+ NSString *transactionID = [RCTConvert NSString:[attributes valueForKey:@"transactionID"]];
+
+ YMMRevenueInfo *info = [[YMMRevenueInfo alloc]
+ initWithPriceDecimal:[NSDecimalNumber decimalNumberWithDecimal:price]
+ currency:currency
+ quantity:quantity
+ productID:productID
+ transactionID:transactionID
+ receiptData:nil
+ payload:nil];
+
+ [YMMYandexMetrica reportRevenue:info onFailure:^(NSError *error) {
+ NSString *msg = [error localizedDescription];
+ NSLog(@"revenueEventError %@", msg);
+ }];
+}
+
// Don't compile this code when we build for the old architecture.
#ifdef RCT_NEW_ARCH_ENABLED
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
diff --git a/node_modules/@extence/react-native-appmetrica/src/index.tsx b/node_modules/@extence/react-native-appmetrica/src/index.tsx
index f96901c..49dd9ed 100644
--- a/node_modules/@extence/react-native-appmetrica/src/index.tsx
+++ b/node_modules/@extence/react-native-appmetrica/src/index.tsx
@@ -22,6 +22,12 @@ interface Config {
appVersion?: string;
}
+export interface RevenueParams {
+ readonly quantity: number;
+ readonly productID: string;
+ readonly transactionID: string;
+}
+
export function initialize(key: string, config?: Config) {
return ReactNativeAppmetrica.setup(key, config);
}
@@ -32,3 +38,7 @@ export function reportEvent(
): Promise<boolean> {
return ReactNativeAppmetrica.reportEvent(name, attributes);
}
+
+export const revenueEvent = (params: RevenueParams) => {
+ ReactNativeAppmetrica.revenueEvent(params);
+};
This issue body was partially generated by patch-package.
Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch
@extence/react-native-appmetrica@0.10.1for the project I'm working on.Here is the diff that solved my problem:
This issue body was partially generated by patch-package.