Google से इस उदाहरण में कुछ समझ में नहीं आ रहा है

मैं अपने एंड्रॉइड ऐप में Google क्लाउड मैसेजिंग का उपयोग करने के तरीके को समझने की कोशिश कर रहा हूं, इसलिए मुझे Google द्वारा लिखित यह गिल्ड मिला लेकिन वहां कुछ ऐसा है जो मुझे समझ में नहीं आता है।

यदि Google Play Services डिवाइस पर उपलब्ध है और यदि नहीं, तो यह Play Services को इंस्टॉल/अपडेट करने का विकल्प खोलता है, तो यह विधियां सही होने का मानती हैं:

private boolean checkPlayServices() {
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.i(TAG, "This device is not supported.");
            finish();
        }
        return false;
    }
    return true; 
}

इसके अलावा वे onResume() विधि को ओवरराइड करते हैं:

protected void onResume() {
    super.onResume();
    checkPlayServices(); 
}

मुख्य गतिविधि के onCreate() विधि में उन्होंने निम्न कोड लिखा था:

if (checkPlayServices()) {
    gcm = GoogleCloudMessaging.getInstance(this);
    regid = getRegistrationId(context);

    if (regid.isEmpty()) {
        registerInBackground();
    }
} else {
    Log.i(TAG, "No valid Google Play Services APK found.");
}

मान लें कि Google Play सेवाओं को परिवर्तनीय resultCode को अपडेट करने की आवश्यकता है ConnectionResult.SUCCESS से भिन्न मान होगा और इसलिए संवाद बॉक्स बन जाएगा और वापसी मान गलत होगा। लेकिन अगर रिटर्न वैल्यू गलत है तो पंजीकरण प्रक्रिया तब भी नहीं होगी जब उपयोग ने प्ले सेवाओं को अपडेट किया हो।

0
मुझे समझ में नहीं आता कि आप किस बारे में उलझन में हैं। यदि कनेक्शन विफल हुआ, तो प्रोग्राम false देता है क्योंकि पंजीकरण संभव नहीं है (क्योंकि आप Google क्लाउड से कनेक्ट नहीं हो सकते हैं)।
जोड़ा लेखक Joetjah, स्रोत
यदि उपयोगकर्ता Play Services को अपडेट/इंस्टॉल करता है तो वह अब पंजीकरण करने में सक्षम है, लेकिन एप्लिकेशन ऐसा नहीं करेगा क्योंकि वापसी मूल्य गलत है।
जोड़ा लेखक Dor Mesica, स्रोत

1 उत्तर

ऐसा लगता है कि यह पहली बार झूठी रिटर्न देता है, फिर भी ऑनर्यूम() विधि संभवतः चेकप्ले सेवा() को दूसरी बार निकाल देती है जो उपयोगकर्ता को Play सेवा अपडेट करने के बाद सच होने पर सच होना चाहिए।

पंजीकरण तर्क निष्पादित नहीं होगा। चूंकि यह जीसीएम का प्रदर्शन करने के लिए केवल एक डेमो ऐप है, उन्होंने उस परिदृश्य से निपटने के लिए कुछ भी नहीं जोड़ा है। ऐसा प्रतीत होता है कि धारणा यह है कि उपयोगकर्ता के पास पहले से ही Play सेवा मौजूद है। उस परिदृश्य में, उपयोगकर्ता को ऐप छोड़ना होगा और उसे फिर से दर्ज करना होगा। आप onRreume() विधि के समान तर्क को निष्पादित करने के लिए onResume() विधि में संशोधन कर सकते हैं।

0
जोड़ा
ऑन-रेज़्यूमे विधि में checkPlayService() का वापसी मान एक अलग मान है। यह ऑनक्रेट विधि से उपलब्ध नहीं है। यह वैश्विक नहीं है।
जोड़ा लेखक Dor Mesica, स्रोत
लेकिन ऑनस्यूम के दौरान लौटाया जाने वाला यह सच कैसे है क्रिएट विधि पंजीकरण कोड निष्पादित करता है?
जोड़ा लेखक Dor Mesica, स्रोत
सही है, लेकिन अगर यह ऑनक्रेट() के दौरान गलत लौटाता है लेकिन उपयोगकर्ता डायलॉग के माध्यम से अपडेट डाउनलोड करना चुनता है, तो अपडेट के बाद इसे रीज़्यूम() के दौरान सही करना चाहिए। यदि उपयोगकर्ता Play सेवा को इंस्टॉल/अपडेट नहीं करता है, तो यह झूठी वापसी जारी रहेगा।
जोड़ा लेखक Joe, स्रोत
यह निष्पादित नहीं होगा। चूंकि यह जीसीएम का प्रदर्शन करने के लिए केवल एक डेमो ऐप है, उन्होंने उस परिदृश्य से निपटने के लिए कुछ भी नहीं जोड़ा है। उपयोगकर्ता को ऐप छोड़ना होगा और उसे फिर से दर्ज करना होगा। आप onRreume() विधि के समान तर्क को निष्पादित करने के लिए onResume() विधि में संशोधन कर सकते हैं।
जोड़ा लेखक Joe, स्रोत