2013-03-07 32 views
7

Tôi có một ứng dụng trong Google Play với 5000 lượt tải xuống.Android GCM Một số thiết bị không đăng ký

Trong số 5000, 900 không lưu trữ ID đăng ký GCM trên máy chủ của tôi.

Tôi lo lắng về việc có tỷ lệ lỗi 18% và tôi đang cố gắng tìm hiểu lý do tại sao điều này xảy ra. Nó chắc chắn không phải là một vấn đề đi qua một Id để máy chủ của tôi và lưu trữ, vì vậy tôi giả sử nó phải là một thất bại của việc đăng ký. Có ai đi qua bất cứ điều gì như thế này với các dự án của họ? Mã như sau:

// Fired every time the app is booted in Main Activity 
private void setupGCM() 
{ 
    String gcmRegId = GCMRegistrar.getRegistrationId(this); 
    if (gcmRegId.equals("")) 
    { 
     GCMRegistrar.register(this, AppProperties.GCM_SENDER_ID); 
    } else 
    { 
     // This is well tested and is not the issue 
     ServerUtils.sUpdatePushToken(this, gcmRegId); 
    } 
} 

// GCMIntentService Class onRegistered 
@Override 
protected void onRegistered(Context context, String registrationId) 
{ 
    mContext = context; 
    if (!registrationId.equals("")) 
    { 
     AppProperties.GCM_REGISTRATION_ID = registrationId; 
     new UpdateGCMRegistrationIdAsync().execute(); 
    } else 
    { 
     GCMRegistrar.setRegisteredOnServer(context, false); 
    } 
} 

// GCMIntentService Class My Async class for updating Reg Id 
private class UpdateGCMRegistrationIdAsync extends AsyncTask<Integer, Integer, Void> 
{ 
    @Override 
    protected Void doInBackground(Integer... params) 
    {   
     ServerUtils.sUpdatePushToken(mContext, AppProperties.GCM_REGISTRATION_ID); 
     return null; 
    } 
} 
+0

.equals ("") không được khuyến nghị. thử regId.trim(). length()> 0 – drulabs

+2

hoặc '.isEmpty()' – 323go

+1

Đánh giá cao câu trả lời của bạn, tuy nhiên nó được google ghi lại trong bản demo GCM với .equals (""). Plus này sẽ làm việc cho 4100 thiết bị và không cho 900? – TommyGuns21

Trả lời

2

Có một số điều mà làm cho GCM không hoạt động, như:

Một tài khoản google mà không được đồng bộ hóa.

Trong Android 3.2+ khi người dùng "buộc dừng" ứng dụng, gcm cũng không hoạt động.

+1

Cảm ơn câu trả lời của bạn, tài khoản Google sẽ được đồng bộ hóa khi họ cần tải xuống ứng dụng từ Google Play. Xét về lực lượng dừng lại, tôi sẽ ngạc nhiên nếu đây là vấn đề đối với 18% người dùng. – TommyGuns21

+0

Đây là một số vấn đề xảy ra với tôi, người dùng có thể thay đổi acc được đồng bộ hóa và không chắc chắn nhưng nó làm cho thay đổi "ID đăng ký", bạn cũng phải thay đổi nó trong web serv. Và bạn nên xem xét rằng 900 có lẽ họ không phải là người dùng mới. –

4

Tôi vừa xử lý vấn đề có thể giống như vấn đề của bạn. Các thiết bị có Android dưới 4.1 không đăng ký được với GCM. Đây là bài đăng của tôi từ nhóm google-gcm google:

Ok, got it solved. Thanks to J.Carlos Navea and Mark Murphy in this thread: 
https://groups.google.com/forum/?fromgroups=#!searchin/android-gcm/onRegister/android-gcm/CqMRN4gVRpY/AGphcX1AuhgJ 

The issue was the <category> tag in the receiver declaration. It is required for anything less than 4.1 
Use your package name there. Additionally, check to make sure that the <permission> and <uses-permission> 
tags use the same string/name. I was getting away with that one as well on 4.1 
1

Bạn đang xử lý tình huống đăng ký GCM không thành công? Nếu bạn đang sử dụng GCMIntentService, chắc chắn rằng bạn đang thực hiện như sau:

@Override 
protected void onError(Context context, String regid) { 
    // Handle error condition. 
} 
0

tôi đã cùng một vấn đề, một số thiết bị didnt đăng ký, tôi đã kiểm tra manisfest của tôi và nó là một vấn đề với tên của việc kiểm tra gói cẩn thận

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