簡體   English   中英

Android解析推送通知和新GCM生成錯誤的設備令牌並解析推送通知無法正常工作

[英]Android parse push notification and new GCM generate wrong device token and parse push notification not working

簡介 :在解析安裝表中,當我使用新的GCM API時,設備令牌未正確添加。 現在跟隨添加到Parse安裝表中的設備令牌類型。

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


詳細說明

我使用新的GCM api獲取注冊ID。 我需要那個內部使用的regId

我使用了谷歌的以下鏈接代碼: 谷歌雲消息安卓

我注意到了一點。 什么時候我開始應用解析正確獲取deviceToken。 登錄后,我使用mainActivity的onCreate中的以下代碼更新“user”字段

 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();
            }
        }
    });

通常當上面的代碼運行時,deviceToken被改為上面提到的令牌似乎是錯誤的。 所以我的推送通知不起作用。

我已經解決了問題。

我需要將GCM設備令牌傳遞給其他Web服務,因此我使用以下代碼從GCM獲取令牌。

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

從此代碼解析后獲取令牌的deviceToken已更改。 因此,我沒有使用上面的代碼,而是使用以下代碼來獲取deviceToken,它解決了這個問題。

ParseInstallation.getCurrentInstallation().getString("deviceToken");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM