chabokpush / chabok-client-rn-js

Chabok react native wrapper in pure JS (supports code push)
MIT License
4 stars 0 forks source link

Error: "Maximum call stack size exceeded" when using chabok.track() #5

Open eddiecooro opened 5 years ago

eddiecooro commented 5 years ago

chabokpush-rn: v1.3.0

chabokUtils.js:

  let chabok = new chabokpush(authConfig, options)  
  export function initChabok(_userId){...}
  export function initPushNotification() {...}
  export function onAddToCartTrackTapped() {
    chabok.track('AddToCart')
  }

App.js

  class App extends Component {
    ...
    componentDidMount() {
      CHABOK.initChabok(DeviceInfo.getUniqueID());
      CHABOK.initPushNotification();
      CHABOK.onAddToCartTrackTapped();
    }
    ...
  }

result

screenshot from 2018-12-17 11-11-28

Husseinhj commented 5 years ago

@Eddie-CooRo

لطفا متد onAddToCartTrackTapped رو در then متد register فراخوانید کنید و نتیجه را اطلاع دهید.

CHABOK.register(userId)
            .then(_ => {
                CHABOK.onAddToCartTrackTapped();
            })
            .catch(err => {
                console.log("~~~~~~~~~~ Error ", err);
            });
eddiecooro commented 5 years ago

سلام

درست و بدون مشکل کار کرد

ولی این حالت ایده آل برای اپ ما نیست, چون ممکنه هر نقطه ای از اپ ترک ها استفاده بشن و تضمینی نیست که متد register زودتر کارش رو به اتمام رسونده باشه

Husseinhj commented 5 years ago

چون ممکنه هر نقطه ای از اپ ترک ها استفاده بشن و تضمینی نیست که متد register زودتر کارش رو به اتمام رسونده باشه

این موضوع در نسخه بعدی برطرف خواهد شد.

اگر امکانش هست اطلاعاتی در مورد نیاز اپلیکیشنتان به ما ارائه دهید تا دقیق‌تر در این مورد راهنماییتان کنیم.

اگر توضیح این موضوع در فضای عمومی برای شما امکان پذیر نیست از طریق راه‌های ارتباطی دیگر (ایمیل و تلفن) به ما در تماس باشید.

eddiecooro commented 5 years ago

خیلی ممنون از پیگیریتون @Husseinhj

مشکلی که بوجود اومده اینه که الان چون همه جای اپ نیاز به track داریم ناچاریم منتظر register شدن چابک بمونیم

یعنی تا وقتی که register نشده صفحه لودینگ نمایش بدیم و اگر احیاناْ fail شد دکمه تلاش مجدد رو نشون بدیم تا از کرش کردن اپ جلوگیری کنیم

ولی خب ایده آلمون اینه که صفحه لودینگ حدالامکان کوتاه باشه و کاربر سریعتر بتونه وارد اپ بشه

eddiecooro commented 5 years ago

سلام مجدد به راه حل خوبی نرسیدیم

این موضوع در نسخه بعدی برطرف خواهد شد.

باید منتظر ورژن جدید بمونیم؟؟؟

Husseinhj commented 5 years ago

باید منتظر ورژن جدید بمونیم؟؟؟

بله، در نسخه جدید که در سه هفته آینده منتشر می‌شود این موضوع رفع خواهد شد.

rahimasgari commented 5 years ago

سلام من این خطا رو زمانی که میخوام کاربر رو توی یه کانال عضو کنم میگیرم. این هم کد من هست:

    this.chabok.register('SIB123').then(({deviceId}) => {
      console.log('Regsitered ', deviceId);
      this.chabok.subscribe("SIB-ADS");
    }).catch(error => {
      console.log('Fail to register user ', error)
    });

رجیستر به درستی انجام میشه ولی متد subscribe این خطا رو میده.

Husseinhj commented 5 years ago

من این خطا رو زمانی که میخوام کاربر رو توی یه کانال عضو کنم میگیرم.

چون کاربر هنوز رجیستر نشده برای همین نمی‌تونه کاربر رو روی کانال عضو کنه.

این مورد در نسخه بعدی برطرف میشه

rahimasgari commented 5 years ago

من متود عضویت در کانال رو بعد از متد رجیستر صدا میزنم. یعنی رجیستر انجام شده

Husseinhj commented 5 years ago

من متود عضویت در کانال رو بعد از متد رجیستر صدا میزنم. یعنی رجیستر انجام شده

متد رجیستر به صورت async اجرا میشه و برای چک کردن اینکه کاربر واقعا رجیستر شده از متد isRegistered استفاده کنید

rahimasgari commented 5 years ago

دوست عزیز اگه به کد من توجه کنید متوجه میشید که من از promise استفاده کردم. یعنی قطعا رجیستر انجام میشه و بعد subscribe صدا زده میشه.

rahimasgari commented 5 years ago

{ [RangeError: Maximum call stack size exceeded.] line: 976, column: 257243, sourceURL: 'index.android.bundle' }

Husseinhj commented 5 years ago

{ [RangeError: Maximum call stack size exceeded.] line: 976, column: 257243, sourceURL: 'index.android.bundle' }

این موضوع رو بررسی می‌کنیم