2016-06-06 25 views
7

Tôi gặp sự cố khi liên kết động Firebase được khởi chạy lại khi ứng dụng Android được khởi động lại. Trình tự sau đây tạo ra vấn đề:Liên kết động Firebase được xử lý hai lần

  1. nhấp chuột URL liên kết sâu
  2. ứng dụng được mở tại xem chỉ bởi các liên kết sâu (như mong đợi)
  3. đóng ứng dụng (hoàn toàn)
  4. mở ứng dụng từ biểu tượng
  5. ứng dụng được mở tại xem chỉ bởi các liên kết sâu (mặc dù nó không nên)
  6. sau đó nó hoạt động tốt

Tôi đang sử dụng thư viện mới nhất (9.0.2). Mã này giống như trong ví dụ (ví dụ: tại đây: https://firebase.google.com/docs/dynamic-links/android#add-an-intent-filter-for-deep-links), autoLaunchDeepLink là sai.

  • tôi nhận thấy rằng đã có một lỗi gây ra điều này, nhưng nó phải được cố định trong phiên bản hiện tại: https://github.com/googlesamples/google-services/issues/141

  • Tôi đã thử một workaround bằng cách gọi AppInvite.AppInviteApi.getInvitation hai lần, như được hướng dẫn trong báo cáo lỗi github. Không thành công.

  • Trong onCreate Tôi kiểm tra xem savedInstance có rỗng không và chỉ kiểm tra liên kết sâu nếu có.

  • Tôi đang kiểm tra liên kết sâu cũng trong onNewIntent để xử lý trong khi ứng dụng đang chạy, tuy nhiên điều này không được gọi khi sự cố xảy ra.

  • Trong tệp kê khai của tôi, bộ lọc ý định với giao thức và máy chủ lưu trữ cụ thể chỉ được bao gồm trong hoạt động chính. Giao thức này cũng được sử dụng trong các bộ lọc khác trong các hoạt động khác, nhưng tôi cũng đã thử sử dụng giao thức khác ở những giao thức không có hiệu lực. Chỉ hoạt động chính sử dụng AppInvite.AppInviteApi.getInvitation để có được ý định. Vấn đề xảy ra ngay cả khi tôi loại bỏ các bộ lọc ý định khác khỏi tất cả các hoạt động.

Bất kỳ ý tưởng nào có thể sai hoặc những gì tôi vẫn nên kiểm tra?

Trả lời

4

Bạn cần gọi số getInvitation() cả trong hoạt động trình khởi chạy và trong hoạt động bạn đã khai báo để xử lý liên kết động.

Nhưng trong hoạt động mà xử lý việc liên kết động, bạn cần phải vượt qua rỗng thay vì đi qua các hoạt động như tham số thứ hai của getInvitation(), như AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, null, autoLaunchDeepLink) này.

+0

Điều này hoạt động, cảm ơn. Tuy nhiên, trong trường hợp của tôi, hoạt động của trình khởi chạy và hoạt động mà tôi đã khai báo để xử lý liên kết động giống nhau, vì vậy điều này thực sự giống như "Tôi đã thử cách giải quyết bằng cách gọi AppInvite.AppInviteApi.getInvitation hai lần, như được hướng dẫn trong báo cáo lỗi github . Không thành công.". Tôi đã bỏ lỡ null như một tham số thứ hai. – diidu

+3

Vì vậy, có vẻ như lỗi này không được sửa sau tất cả. Cách giải quyết vẫn cần thiết. – diidu

Các vấn đề liên quan