maitrungduc1410 / react-native-zalo-kit

Zalo SDK implementation for React Native
MIT License
44 stars 11 forks source link

Login zalo ở android app thời gian chờ quá lâu #76

Closed VietKyle closed 4 months ago

VietKyle commented 6 months ago

Mình đang sử dụng plugin react-native-zalo-kit để đăng nhập bằng zalo cho ứng dụng. Cách đây khoảng 6 tháng thì hoạt động bình thường nhưng vài tháng trở lại đây login zalo rất lâu, thường xuyên chờ không dưới 5 phút. Mình đang dùng react-native 0.71, React 18.2 và React-native-zalo-kit 4.0.3

maitrungduc1410 commented 5 months ago

oke mình sẽ test lại nhé,

bạn bị trên ios hay android?

VietKyle commented 5 months ago

Mình đang build react-native cho android thôi ạ

maitrungduc1410 commented 5 months ago

Mình đang build react-native cho android thôi ạ

oke bạn để mình check lại

maitrungduc1410 commented 5 months ago

Mình reproduce được lỗi của bạn rồi.

Đầu tiên mình có 1 project A, setup các thứ, chạy lên login ngon lành.

Tiếp theo mình generate 1 project B, setup các thứ nhưng dùng chung Zalo App ID với app A, dẫn tới việc ở bước setup URL Types thì ta có giá trị giống như app A.

Nên khi chạy app B -> Bấm Login -> Mở App Zalo -> Gọi về app A, trong khi nếu đúng ra nó phải gọi về app B

-->> trường hợp này là ta bị trùng giá trị URL types nên nó Deep Linking ko đúng cái ta muốn, và cái await Login sẽ ko bao giờ trả về

Nếu bạn đang bị như vậy thì:

ở file AppDelegate.mm, nếu method openURL bạn đang cấu hình chung cho cả ZaloKit và các thư viện khác, thì bạn nhớ đặt ZDKApplicationDelegate lên đầu nhé, ví dụ:

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options {
  return [[ZDKApplicationDelegate sharedInstance] application:application openURL:url options:options] || [super application:application openUrl:url options:options] || [RCTLinkingManager application:application openUrl:url options:options];
}
thanhvu260696 commented 5 months ago

ù em lại để cái đó cuối cùng nếu để lên đầu thì có ảnh hưởng gì đến các thằng như line vs FB k a nhỉ

thanhvu260696 commented 5 months ago
Screenshot 2024-01-25 at 14 07 29

nếu emem thêm cả line cả zalo nó đang báo Duplicate declaration of method 'application:openURL:options:' a chỉ em cách sửa nó với được không ạ em ngu native quá

maitrungduc1410 commented 5 months ago
Screenshot 2024-01-25 at 14 07 29

nếu emem thêm cả line cả zalo nó đang báo Duplicate declaration of method 'application:openURL:options:' a chỉ em cách sửa nó với được không ạ em ngu native quá

E gộp chung 2 thằng lại dùng dấu "||" như ví dụ của a ấy nhé. @thanhvu260696

thanhvu260696 commented 5 months ago
thanhvu260696 commented 5 months ago
maitrungduc1410 commented 5 months ago

Đừng if else e, làm như ví dụ của a ấy, dùng dấu ||

thanhvu260696 commented 5 months ago

em cảm ơn a nhiều nhé =)) bồi tu thêm native thôi chứ ngu quá =.=!

maitrungduc1410 commented 5 months ago

em cảm ơn a nhiều nhé =)) bồi tu thêm native thôi chứ ngu quá =.=!

Ai cũng giỏi native thì lib như của a vứt đi e ạ 😂

VietKyle commented 4 months ago

Mình reproduce được lỗi của bạn rồi.

Đầu tiên mình có 1 project A, setup các thứ, chạy lên login ngon lành.

Tiếp theo mình generate 1 project B, setup các thứ nhưng dùng chung Zalo App ID với app A, dẫn tới việc ở bước setup URL Types thì ta có giá trị giống như app A.

Nên khi chạy app B -> Bấm Login -> Mở App Zalo -> Gọi về app A, trong khi nếu đúng ra nó phải gọi về app B

-->> trường hợp này là ta bị trùng giá trị URL types nên nó Deep Linking ko đúng cái ta muốn, và cái await Login sẽ ko bao giờ trả về

Nếu bạn đang bị như vậy thì:

  • xoá các app khác đi chỉ giữ lại 1 cái
  • hoặc dùng 1 cái Zalo App ID khác. Không dùng chung Zalo App ID trên 1 device

Một trường hợp khác cũng có thể xảy ra (trên iOS):

ở file AppDelegate.mm, nếu method openURL bạn đang cấu hình chung cho cả ZaloKit và các thư viện khác, thì bạn nhớ đặt ZDKApplicationDelegate lên đầu nhé, ví dụ:

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options {
  return [[ZDKApplicationDelegate sharedInstance] application:application openURL:url options:options] || [super application:application openUrl:url options:options] || [RCTLinkingManager application:application openUrl:url options:options];
}

Cảm ơn bạn đã phản hồi. Hiện tại project của mình chỉ có duy nhất 1 app, tức là không có app thứ 2 chạy chung Zalo app ID, hoặc có chẳng là mình có dùng app zalo đấy để đăng nhập cho android và web mà thôi, nhưng khi tạo app trên Zalo thì có cấu hình riêng cho android và web. Hai là nếu như bạn nói thì api login không trả về, còn trường hợp của mình là login có trả về nhưng phải chờ thời gian rất lâu, như mình nói khi trước là thường xuyên chờ không dưới 5 phút, và mới bị vài tháng gần đây thôi, cách đây khoảng 8 tháng thì chạy vẫn rất oke. Mong bạn check lại giúp mình

maitrungduc1410 commented 4 months ago

@VietKyle bạn check lại trên máy khác giúp mình nhé, check cả network của bạn nữa nhé

VietKyle commented 4 months ago

@VietKyle bạn check lại trên máy khác giúp mình nhé, check cả network của bạn nữa nhé

Mình đã thử trên dòng máy xiaomi, samsung ạ, và mình cũng thử chuyển qua 4G, nhưng vẫn như vậy ạ