2015-07-29 15 views
6

Giới thiệu tóm tắt: Trong cài đặt phân tích thiết bị bảng mã thông báo là không được thêm đúng khi tôi sử dụng mới API GCM. ngay bây giờ sau loại mã thông báo thiết bị được thêm vào bảng cài đặt Parse.Android thông báo phân tích cú pháp đẩy và GCM mới tạo ra thiết bị sai dấu hiệu và phân tích thông báo push không làm việc

DeviceToken: | ID | 1 |: crGctxOB068: APA91bFgPRehabJcm9CYdS948iqX2_ppLj02CtbzmEHR0cfbuPooq5F - hqqvR9AH-Ez6MWMQON1Toc2DiNJTNdpRc3nmm3ukIpWJ1jHaXq0Iug6MoHbmKb9U0ak2CrKznkpKnPY5_Jp


Mô tả chi tiết:

Tôi đã sử dụng mới GCM api để có được id đăng ký . Tôi cần số regId để sử dụng nội bộ.

Tôi đã sử dụng mã từ liên kết sau của google: Google cloud messaging android.

Tôi đã lưu ý một điểm. khi nào tôi bắt đầu ứng dụng phân tích cú pháp nhận được deviceToken đúng cách. Sau khi đăng nhập tôi đang cập nhật lĩnh vực "dùng" sử dụng đoạn mã sau vào onCreate của MainActivity

ParseACL acl = new ParseACL(); 
acl.setPublicReadAccess(true); 
acl.setPublicWriteAccess(true); 

ParseInstallation installation =  ParseInstallation.getCurrentInstallation(); 
    installation.setACL(acl); 

    if (ParseUser.getCurrentUser() != null) { 
     installation.put("user", ParseUser.getCurrentUser()); 
    } 
installation.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e == null) { 
       Log.e("installation", "success"); 
       Log.i("parse", "token after save : " + ParseInstallation.getCurrentInstallation().getString("deviceToken")); 
       ParsePush.subscribeInBackground("", new SaveCallback() { 

        @Override 
        public void done(ParseException e) { 

         if (e != null) { 

          Log.e("error: ", e.getLocalizedMessage()); 
          e.printStackTrace(); 
         } else { 

          Log.e("subscribed: ", "to broadcast channel"); 
          Log.i("parse", "token after subscribe : " + ParseInstallation.getCurrentInstallation().getString("deviceToken")); 
         } 
        } 
       }); 

      } else { 
       Log.e("installation", "failed"); 
       e.printStackTrace(); 
      } 
     } 
    }); 

Nói chung khi trên mã chạy deviceToken đã thay đổi để nêu trên thẻ mà có vẻ sai. Vì vậy, thông báo đẩy của tôi không hoạt động.

+0

Làm thế nào để bạn xác minh là thiết bịToken đã thay đổi và sai – AniV

+0

khi ứng dụng của tôi chạy lần đầu tiên tôi đã kiểm tra trường DeviceToken của bảng cài đặt, có vẻ ổn. sau khi đăng nhập khi tôi lưu "người dùng" để cài đặt thì trường deviceToken nhận được thay đổi thành mã thông báo được đề cập ở trên. Lưu ý: đôi khi cũng hoạt động tốt. –

Trả lời

1

Tôi đã giải quyết được sự cố.

tôi cần phải vượt qua GCM thiết bị token để webservice khác vì vậy tôi đã sử dụng mã sau đây để nhận mã thông báo từ GCM.

InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); 
       String token = instanceID.getToken(CommonUtils.SENDER_ID, 
         GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Sau khi nhận được mã thông báo từ thiết bị phân tích cú pháp mã nàyToken đã thay đổi. Vì vậy, thay vì sử dụng mã trên, tôi đã sử dụng mã sau để lấy deviceToken và nó đã giải quyết được vấn đề.

ParseInstallation.getCurrentInstallation().getString("deviceToken"); 
Các vấn đề liên quan