2013-09-05 20 views
5

Tôi đang sử dụng FLurry_3.2.2.jar và có mã như thế này trong mỗi Activity. Nó ghi nhật ký chính xác tất cả các phiên, nhưng không ghi nhật ký sự kiện. (Trên thực tế, nó đăng nhập một sự kiện, một thời gian, từ hoạt động Home của tôi)các phiên nhật ký không giống nhau (android)

@Override 
protected void onStart() 
{ 
    super.onStart(); 
    FlurryAgent.onStartSession(this, Utilities.FlurryKey); 
    FlurryAgent.logEvent("Home"); 
} 
@Override 
protected void onStop() 
{ 
    super.onStop(); 
    FlurryAgent.onEndSession(this); 
} 
+2

Tôi đã gặp sự cố tương tự trên Flurry_3.2.2 và hiện đang sử dụng Flurry_3.3.0 (phiên bản này thỉnh thoảng ghi lại sự kiện nhưng không phải lúc nào cũng mất sự kiện). Trong dự án của chúng tôi, Flurry_3.2.1 và Flurry_3.2.0 chỉ hoạt động tốt. – kinORnirvana

+0

Tôi cũng tìm thấy 3.3.1 sẽ không ghi nhật ký sự kiện và phải sử dụng 3.2.1 thay thế. – Ryan

Trả lời

8

Mã của bạn có vẻ đúng. Trong những trường hợp này, tôi thấy rằng nguyên nhân có khả năng nhất là các phiên đầy đủ của bạn không được gửi tới các máy chủ Flurry. Bạn có thể nhận được báo cáo phiên ban đầu, nhưng phiên được đóng vào cuối vòng đời của ứng dụng và chỉ vào thời điểm đó các sự kiện cũng được gửi tới máy chủ.

Bạn cần đảm bảo rằng onStartSessiononEndSession được gọi trên mọi hoạt động. Nếu những điều này được bỏ qua trên bất kỳ hoạt động nào (đặc biệt là onEndSession), phiên của bạn có thể không đóng và các sự kiện có thể không được gửi lên.

Sự kiện được gửi vào cuối phiên khi tất cả các hoạt động đã dừng. Bạn cần đảm bảo kết thúc hoàn toàn ứng dụng của mình trên thiết bị thử nghiệm trước khi bạn có thể thấy bất kỳ sự kiện nào đến trên máy chủ. Nếu bạn chưa thực hiện việc này, dữ liệu sự kiện vẫn có thể đang ngồi trên thiết bị của bạn mà không được gửi.

SDK Flurry cũng cung cấp nhật ký có thể giúp thu hẹp sự cố. Bạn có thể bật ghi nhật ký với FlurryAgent.setLogEnabled(true)FlurryAgent.setLogLevel(Log.DEBUG).

Hãy liên hệ với [email protected] nếu bạn có thêm câu hỏi.

Disclaimer: Tôi làm việc tại loạt :)

+0

Tôi sẽ kiểm tra lại mọi thứ. Tôi có một cảm giác liên quan đến vòng đời của các hoạt động của tôi. Trong một số trường hợp, tôi sử dụng cờ Intent.FLAG_ACTIVITY_CLEAR_TOP để quay lại hoạt động khởi chạy của tôi, hoạt động bất kỳ hoạt động nào nằm ở giữa ngăn xếp. – Matt

+0

Điều gì khác nhau giữa setLogEvents (boolean) và setLogEnabled (boolean). Tôi hơi bối rối về họ. –

+2

setLogEnabled (boolean) là dành cho giao diện điều khiển đăng nhập vào LogCat, chỉ được bật cho mục đích gỡ lỗi. setLogEvents (boolean) cho phép các phương thức logEvent, do đó bạn có thể gửi dữ liệu đến các máy chủ lưu trữ. Nó là đúng theo mặc định, và thường không có lý do để vô hiệu hóa nó (trừ khi bạn cần phải nhanh chóng vô hiệu hóa ghi sự kiện Flurry cho mục đích thử nghiệm) –

1

Xin chào Guys tôi xây dựng lớp học với bộ đếm thời gian để gửi dữ liệu đến Flurry Server. Nó giải quyết mọi vấn đề của tôi.

public class TimerFlurry { 

    private static final String TAG = "TIMER FLURRY"; 
    private Handler handler = new Handler(); 
    private Runnable runnable = null; 
    private boolean stop = false; 

    public TimerFlurry(final Context ctx) { 
     Log.d(TAG, "TimerFlurry.TimerFlurry()"); 

     runnable = new Runnable() { 

      boolean inicializou = false; 

      @Override 
      public void run() { 
       if (stop) { 
        Log.d(TAG, "parou Handler!!!"); 
        FlurryAgent.onEndSession(ctx); 
        inicializou = false; 
        return; 
       } 

       Log.d(TAG, "!!!!!!!!!!!!!!!!!!! .run() now: " + new Date()); 
       if (!inicializou) { 
        Log.d(TAG, ">>>>> inicializou Flurry Session!!!"); 
        FlurryAgent.setContinueSessionMillis(5000); 
        FlurryAgent.onStartSession(ctx, "XXXXXXXXXXXXXXXXXXXX"); 
        FlurryAgent.setLogEnabled(true); 
        FlurryAgent.setLogLevel(Log.DEBUG); 
        inicializou = true; 
        handler.postDelayed(runnable, 60000); 
       } else { 
        Log.d(TAG, "!!!!!!!!!!!!! finalizou Flurry Session!!!"); 
        FlurryAgent.onEndSession(ctx); 
        inicializou = false; 
        handler.postDelayed(runnable, 10000);// inicializa em 10 s 
                  // novamente para 
                  // dar o timeout do 
                  // flurry 
       } 
      } 
     }; 

     handler.postDelayed(runnable, 5000); 
    } 

    public void stop() { 
     stop = true; 
    } 
} 
Các vấn đề liên quan