टीवी इंटिग्रेशन के लिए Engage SDK टूल की गाइड

'देखना जारी रखें' सुविधा, कंटिन्यूएशन क्लस्टर का इस्तेमाल करके, अधूरे वीडियो दिखाती है. साथ ही, एक ही टीवी सीज़न के अगले एपिसोड भी दिखाती है. ये वीडियो और एपिसोड, एक ही यूज़र इंटरफ़ेस (यूआई) ग्रुपिंग में मौजूद एक से ज़्यादा ऐप्लिकेशन से दिखाए जाते हैं. इस क्लस्टर में, उनकी इकाइयों को दिखाया जा सकता है. Engage SDK का इस्तेमाल करके, वीडियो देखना जारी रखने की सुविधा की मदद से, उपयोगकर्ता ऐक्टिविटी को बढ़ाने का तरीका जानने के लिए, इस गाइड का पालन करें.

पहला चरण: साइट की जगह बदलने से पहले की कार्रवाई

शुरू करने से पहले, यह तरीका अपनाएं:

पक्का करें कि इस इंटिग्रेशन के लिए, आपका ऐप्लिकेशन एपीआई लेवल 19 या उसके बाद के लेवल को टारगेट करता हो

  1. अपने ऐप्लिकेशन में com.google.android.engage लाइब्रेरी जोड़ें:

    इंटिग्रेशन में इस्तेमाल करने के लिए, अलग-अलग SDK टूल उपलब्ध हैं: एक मोबाइल ऐप्लिकेशन के लिए और एक टीवी ऐप्लिकेशन के लिए.

    मोबाइल

    
      dependencies {
        implementation 'com.google.android.engage:engage-core:1.5.5
      }
    

    टीवी

    
      dependencies {
        implementation 'com.google.android.engage:engage-tv:1.0.2
      }
    
  2. AndroidManifest.xml फ़ाइल में, Engage सेवा के एनवायरमेंट को प्रोडक्शन पर सेट करें.

    मोबाइल

    
    <meta-data
          android:name="com.google.android.engage.service.ENV"
          android:value="PRODUCTION">
    </meta-data>
    

    टीवी

    
    <meta-data
        android:name="com.google.android.engage.service.ENV"
        android:value="PRODUCTION">
    </meta-data>
    
  3. टीवी के लिए बनाए गए APK में WRITE_EPG_DATA के लिए अनुमति जोड़ना

      <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
    
  4. शेड्यूल करने के लिए, androidx.work जैसी बैकग्राउंड सेवा का इस्तेमाल करके, कॉन्टेंट को भरोसेमंद तरीके से पब्लिश करना.

  5. वीडियो देखने का बेहतरीन अनुभव देने के लिए, इन इवेंट के होने पर 'वीडियो देखना जारी रखें' डेटा पब्लिश करें:

    1. पहली बार लॉग इन करना: जब कोई उपयोगकर्ता पहली बार लॉग इन करता है, तो उसका डेटा पब्लिश करने से यह पक्का होता है कि वीडियो देखने का उसका इतिहास तुरंत उपलब्ध हो.
    2. प्रोफ़ाइल बनाना या स्विच करना (एक से ज़्यादा प्रोफ़ाइल वाले ऐप्लिकेशन): अगर आपका ऐप्लिकेशन एक से ज़्यादा प्रोफ़ाइलों के साथ काम करता है, तो जब कोई उपयोगकर्ता प्रोफ़ाइल बनाता है या स्विच करता है, तब डेटा पब्लिश करें. इससे यह पक्का होता है कि हर उपयोगकर्ता को उसके हिसाब से अनुभव मिले.
    3. वीडियो चलाने में रुकावट: उपयोगकर्ताओं को वीडियो वहीं से चलाने में मदद करने के लिए, वीडियो रोकने या बंद करने पर या वीडियो चलाने के दौरान ऐप्लिकेशन से बाहर निकलने पर डेटा पब्लिश करें.
    4. 'देखना जारी रखें' ट्रे में अपडेट (अगर उपलब्ध हो): जब कोई उपयोगकर्ता 'देखना जारी रखें' ट्रे से कोई आइटम हटाता है, तो अपडेट किया गया डेटा पब्लिश करके उस बदलाव को दिखाएं. इससे यह पक्का होता है कि ट्रे आपके काम की और आपके हिसाब से बनी रहे.
    5. वीडियो को पूरा देखे जाने की दर:
      1. फ़िल्मों के लिए, 'देखना जारी रखें' ट्रे से पूरी हो चुकी फ़िल्म को हटाएं. अगर फ़िल्म किसी सीरीज़ का हिस्सा है, तो उपयोगकर्ता की दिलचस्पी बनाए रखने के लिए अगली फ़िल्म जोड़ें.
      2. एपिसोड के लिए, पूरा सुना जा चुका एपिसोड हटाएं और सीरीज़ में अगला एपिसोड जोड़ें. ऐसा करने से, दर्शक सीरीज़ को पूरा देखने के लिए प्रेरित होंगे. हालांकि, ऐसा सिर्फ़ तब करें, जब अगला एपिसोड उपलब्ध हो.

SDK टूल इंटिग्रेशन

AccountProfile

Google TV पर, "देखना जारी रखें" सुविधा को आपके हिसाब से बनाने के लिए, खाते और प्रोफ़ाइल की जानकारी दें. AccountProfile का इस्तेमाल करके ये जानकारी दें:

  1. खाता आईडी: यह एक यूनीक आइडेंटिफ़ायर है, जो आपके ऐप्लिकेशन में उपयोगकर्ता के खाते की जानकारी देता है. यह खाते का असल आईडी या सही तरीके से बदला गया वर्शन हो सकता है.

  2. प्रोफ़ाइल आईडी (ज़रूरी नहीं): अगर आपका ऐप्लिकेशन एक ही खाते में कई प्रोफ़ाइलों के साथ काम करता है, तो किसी खास उपयोगकर्ता प्रोफ़ाइल के लिए यूनीक आइडेंटिफ़ायर दें. यह आइडेंटिफ़ायर, असल या छिपाया गया हो सकता है.

// If your app only supports account
val accountProfile = AccountProfile.Builder()
      .setAccountId("your_users_account_id")
      .build()
// If your app supports both account and profile
val accountProfile = AccountProfile.Builder()
      .setAccountId("your_users_account_id")
      .setProfileId("your_users_profile_id")
.build()

इकाइयां बनाना

SDK ने हर तरह के आइटम को दिखाने के लिए अलग-अलग इकाइयां तय की हैं. कंटिन्यूएशन क्लस्टर में ये इकाइयां काम करती हैं:

  1. MovieEntity
  2. TvEpisodeEntity
  3. LiveStreamingVideoEntity
  4. VideoClipEntity

इन इकाइयों के लिए, प्लैटफ़ॉर्म के हिसाब से यूआरआई और पोस्टर इमेज दें.

अगर आपने अब तक हर प्लैटफ़ॉर्म के लिए, जैसे कि Android TV, Android या iOS के लिए वीडियो चलाने के यूआरआई नहीं बनाए हैं, तो उन्हें बनाएं. इसलिए, जब कोई उपयोगकर्ता हर प्लैटफ़ॉर्म पर वीडियो देखना जारी रखता है, तो ऐप्लिकेशन वीडियो कॉन्टेंट चलाने के लिए, टारगेट किए गए वीडियो चलाने के यूआरआई का इस्तेमाल करता है.

// Required. Set this when you want continue watching entities to show up on
// Google TV
val playbackUriTv =
          PlatformSpecificUri.Builder()
              .setPlatformType(PlatformType.TYPE_ANDROID_TV)
              .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
              .build()

// Required. Set this when you want continue watching entities to show up on
// Google TV Android app, Entertainment Space, Playstore Widget
val playbackUriAndroid =
          PlatformSpecificUri.Builder()
              .setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)
              .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
              .build()
// Optional. Set this when you want continue watching entities to show up on
// Google TV iOS app
val playbackUriIos =
          PlatformSpecificUri.Builder()
              .setPlatformType(PlatformType.TYPE_IOS)
              .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
              .build()
 val platformSpecificPlaybackUris =
          Arrays.asList(playbackUriTv, playbackUriAndroid, playbackUriIos)

पोस्टर इमेज के लिए यूआरआई और पिक्सल डाइमेंशन (ऊंचाई और चौड़ाई) की ज़रूरत होती है. अलग-अलग डिवाइसों के लिए, एक से ज़्यादा पोस्टर इमेज उपलब्ध कराएं. हालांकि, यह पक्का करें कि सभी इमेज का आसपेक्ट रेशियो 16:9 हो और उनकी ऊंचाई कम से कम 200 पिक्सल हो, ताकि "देखना जारी रखें" इकाई को सही तरीके से दिखाया जा सके. खास तौर पर, Google के Entertainment Space में. हो सकता है कि 200 पिक्सल से कम ऊंचाई वाली इमेज न दिखाई जाएं.


Image image1 = new Image.Builder()
            .setImageUri(Uri.parse("http://www.example.com/entity_image1.png");)
            .setImageHeightInPixel(300)
            .setImageWidthInPixel(169)
            .build()
Image image2 = new Image.Builder()
            .setImageUri(Uri.parse("http://www.example.com/entity_image2.png");)
            .setImageHeightInPixel(640)
            .setImageWidthInPixel(360)
            .build()
// And other images for different form factors.
val images = Arrays.asList(image1, image2)
MovieEntity

इस उदाहरण में, सभी ज़रूरी फ़ील्ड के साथ MovieEntity बनाने का तरीका बताया गया है:

val movieEntity = MovieEntity.Builder()
   .setWatchNextType(WatchNextType.TYPE_CONTINUE)
   .setName("Movie name")
   .addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
   .addPosterImages(images)
   // Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
   .setLastEngagementTimeMillis(1701388800000)
   // Suppose the duration is 2 hours, it is 72000000 in milliseconds
   .setDurationMills(72000000)
   // Suppose last playback offset is 1 hour, 36000000 in milliseconds
   .setLastPlayBackPositionTimeMillis(36000000)
   .build()

शैलियों और कॉन्टेंट रेटिंग जैसी जानकारी देने पर, Google TV आपके कॉन्टेंट को ज़्यादा डाइनैमिक तरीके से दिखा सकता है. साथ ही, उसे सही दर्शकों तक पहुंचा सकता है.

val genres = Arrays.asList("Action", "Science fiction");
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build();
val contentRatings = Arrays.asList(rating1);
val movieEntity = MovieEntity.Builder()
    ...
    .addGenres(genres)
    .addContentRatings(contentRatings)
    .build()

इकाइयां 60 दिनों तक अपने-आप उपलब्ध रहती हैं. हालांकि, अगर आपने खत्म होने का कम समय तय किया है, तो ऐसा नहीं होगा. अगर आपको इकाई को इस डिफ़ॉल्ट अवधि से पहले हटाना है, तो ही समयसीमा खत्म होने की कस्टम अवधि सेट करें.

// Set the expiration time to be now plus 30 days in milliseconds
val expirationTime = new DisplayTimeWindow.Builder()
             .setEndTimestampMillis(now().toMillis()+2592000000).build()
val movieEntity = MovieEntity.Builder()
    ...
    .addAvailabilityTimeWindow(expirationTime)
    .build()
TvEpisodeEntity

इस उदाहरण में, सभी ज़रूरी फ़ील्ड के साथ TvEpisodeEntity बनाने का तरीका बताया गया है:

val tvEpisodeEntity = TvEpisodeEntity.Builder()
    .setWatchNextType(WatchNextType.TYPE_CONTINUE)
    .setName("Episode name")
    .addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
    .addPosterImages(images)
    // Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
    .setLastEngagementTimeMillis(1701388800000)
    .setDurationMills(72000000) // 2 hours in milliseconds
    // 45 minutes and 15 seconds in milliseconds is 2715000
    .setLastPlayBackPositionTimeMillis(2715000)
    .setEpisodeNumber("2")
    .setSeasonNumber("1")
    .setShowTitle("Title of the show")
    .build();

एपिसोड नंबर स्ट्रिंग (जैसे, "2") और सीज़न नंबर स्ट्रिंग (जैसे, "1") को, 'देखना जारी रखें' कार्ड पर दिखाए जाने से पहले, सही फ़ॉर्मैट में बड़ा कर दिया जाएगा. ध्यान दें कि ये अंकों वाली स्ट्रिंग होनी चाहिए. "e2", "episode 2", "s1" या "season 1" न डालें.

अगर किसी टीवी शो का एक ही सीज़न है, तो सीज़न नंबर को 1 पर सेट करें.

दर्शकों को Google TV पर आपका कॉन्टेंट ढूंढने में मदद करने के लिए, ज़्यादा डेटा दें. जैसे, शैलियां, कॉन्टेंट रेटिंग, और उपलब्धता की समयसीमा. इससे डिसप्ले और फ़िल्टर करने के विकल्प बेहतर हो सकते हैं.

val genres = Arrays.asList("Action", "Science fiction")
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build()
val contentRatings = Arrays.asList(rating1)
val tvEpisodeEntity = TvEpisodeEntity.Builder()
    ...
    .addGenres(genres)
    .addContentRatings(contentRatings)
    .setSeasonTitle("Season Title")
    .setShowTitle("Show Title)
    .build();
VideoClipEntity

यहां सभी ज़रूरी फ़ील्ड के साथ VideoClipEntity बनाने का उदाहरण दिया गया है.

VideoClipEntity, YouTube वीडियो जैसी उपयोगकर्ता जनरेटेड क्लिप दिखाता है.

val videoClipEntity = VideoClipEntity.Builder()
    .setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
    .setWatchNextType(WatchNextType.TYPE_CONTINUE)
    .setName("Video clip name")
    .addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
    .addPosterImages(images)
    // Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
    .setLastEngagementTimeMillis(1701388800000)
    .setDurationMills(600000) //10 minutes in milliseconds
    .setLastPlayBackPositionTimeMillis(300000) //5 minutes in milliseconds
    .addContentRating(contentRating)
    .build();

आपके पास क्रिएटर, क्रिएटर की इमेज, बनाने का समय मिलीसेकंड में या उपलब्धता की समयसीमा सेट करने का विकल्प होता है .

LiveStreamingVideoEntity

यहां सभी ज़रूरी फ़ील्ड के साथ LiveStreamingVideoEntity बनाने का उदाहरण दिया गया है.

val liveStreamingVideoEntity = LiveStreamingVideoEntity.Builder()
    .setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
    .setWatchNextType(WatchNextType.TYPE_CONTINUE)
    .setName("Live streaming name")
    .addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
    .addPosterImages(images)
    // Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
    .setLastEngagementTimeMillis(1701388800000)
    .setDurationMills(72000000) //2 hours in milliseconds
    .setLastPlayBackPositionTimeMillis(36000000) //1 hour in milliseconds
    .addContentRating(contentRating)
    .build();

इसके अलावा, लाइव स्ट्रीमिंग की इकाई के लिए, शुरू होने का समय, ब्रॉडकास्टर, ब्रॉडकास्टर का आइकॉन या उपलब्धता की समयावधि सेट की जा सकती है.

एट्रिब्यूट और ज़रूरी शर्तों के बारे में ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस देखें.

कंटिन्यूएशन क्लस्टर का डेटा उपलब्ध कराना

AppEngagePublishClient के पास, कंटिन्यूएशन क्लस्टर को पब्लिश करने की ज़िम्मेदारी है. ContinuationCluster ऑब्जेक्ट को पब्लिश करने के लिए, publishContinuationCluster() तरीके का इस्तेमाल किया जाता है.

सबसे पहले, आपको isServiceAvailable() का इस्तेमाल करके यह देखना चाहिए कि सेवा, इंटिग्रेशन के लिए उपलब्ध है या नहीं.

client.publishContinuationCluster(
    PublishContinuationClusterRequest
        .Builder()
        .setContinuationCluster(
            ContinuationCluster
                .Builder()
                .setAccountProfile(accountProfile)
                .addEntity(movieEntity1)
                .addEntity(movieEntity2)
                .addEntity(tvEpisodeEntity1)
                .addEntity(tvEpisodeEntity2)
                .setSyncAcrossDevices(true)
                .build()
        )
        .build();
)

सेवा को अनुरोध मिलने पर, एक ही लेन-देन में ये कार्रवाइयां होती हैं:

  • डेवलपर पार्टनर का मौजूदा ContinuationCluster डेटा हटा दिया जाता है.
  • अनुरोध से मिले डेटा को पार्स करके, अपडेट किए गए ContinuationCluster में सेव किया जाता है.

गड़बड़ी होने पर, पूरा अनुरोध अस्वीकार कर दिया जाता है और मौजूदा स्थिति को बनाए रखा जाता है.

पब्लिश एपीआई, अप्सर्ट एपीआई होते हैं. ये मौजूदा कॉन्टेंट की जगह ले लेते हैं. अगर आपको ContinuationCluster में किसी खास इकाई को अपडेट करना है, तो आपको सभी इकाइयों को फिर से पब्लिश करना होगा.

ContinuationCluster का डेटा सिर्फ़ वयस्कों के खातों के लिए दिया जाना चाहिए. सिर्फ़ तब पब्लिश करें, जब AccountProfile किसी वयस्क की हो.

अलग-अलग डिवाइसों पर सिंक करने की सुविधा

SyncAcrossDevices फ़्लैग

इस फ़्लैग से यह कंट्रोल किया जाता है कि उपयोगकर्ता के ContinuationCluster डेटा को उसके सभी डिवाइसों (टीवी, फ़ोन, टैबलेट वगैरह) पर सिंक किया जाए या नहीं. यह डिफ़ॉल्ट रूप से गलत पर सेट होता है. इसका मतलब है कि क्रॉस-डिवाइस सिंक करने की सुविधा डिफ़ॉल्ट रूप से बंद होती है.

वैल्यू:

  • true: वीडियो देखने के बेहतर अनुभव के लिए, ContinuationCluster का डेटा, उपयोगकर्ता के सभी डिवाइसों पर शेयर किया जाता है. हमारा सुझाव है कि अलग-अलग डिवाइसों पर बेहतर अनुभव पाने के लिए, इस विकल्प का इस्तेमाल करें.
  • false: ContinuationCluster का डेटा, मौजूदा डिवाइस तक ही सीमित है.

मीडिया ऐप्लिकेशन में, अलग-अलग डिवाइसों के बीच सिंक करने की सुविधा को चालू/बंद करने के लिए साफ़ तौर पर सेटिंग दी जानी चाहिए. उपयोगकर्ता को इसके फ़ायदों के बारे में बताएं और उपयोगकर्ता की प्राथमिकता को एक बार सेव करें. इसके बाद, इसे publishContinuationCluster में लागू करें.

// Example to allow cross device syncing.
client.publishContinuationCluster(
    PublishContinuationClusterRequest
        .Builder()
        .setContinuationCluster(
            ContinuationCluster
                .Builder()
                .setAccountProfile(accountProfile)
                .setSyncAcrossDevices(true)
                .build();
        )
        .build();
)

क्रॉस-डिवाइस सुविधा का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, पक्का करें कि आपका ऐप्लिकेशन उपयोगकर्ता की सहमति ले रहा हो. साथ ही, SyncAcrossDevices को 'सही' पर सेट करें. इससे कॉन्टेंट को सभी डिवाइसों पर आसानी से सिंक किया जा सकता है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है और दर्शकों की दिलचस्पी बढ़ती है. उदाहरण के लिए, इस सुविधा को लागू करने वाले एक पार्टनर को "देखना जारी रखें" पर क्लिक में 40% की बढ़ोतरी हुई, क्योंकि उनका कॉन्टेंट कई डिवाइसों पर दिखाया गया था.

वीडियो डिस्कवरी का डेटा मिटाना

उपयोगकर्ता के डेटा को Google TV सर्वर से, 60 दिनों की स्टैंडर्ड अवधि से पहले मैन्युअल तरीके से मिटाने के लिए, client.deleteClusters() तरीके का इस्तेमाल करें. अनुरोध मिलने पर, यह सेवा खाता प्रोफ़ाइल या पूरे खाते के लिए, वीडियो डिस्कवरी से जुड़ा सारा मौजूदा डेटा मिटा देगी.

DeleteReason एनम, डेटा मिटाने की वजह बताता है. यहां दिया गया कोड, लॉग आउट करने पर 'वीडियो देखना जारी रखें' सुविधा से जुड़ा डेटा हटा देता है.


// If the user logs out from your media app, you must make the following call
// to remove continue watching data from the current google TV device,
// otherwise, the continue watching data will persist on the current
// google TV device until 60 days later.
client.deleteClusters(
  new DeleteClustersRequest.Builder()
        .setAccountProfile(AccountProfile())
        .setReason(DeleteReason.DELETE_REASON_USER_LOG_OUT)
        .setSyncAcrossDevices(true)
        .build()
)

टेस्ट करना

पुष्टि करने वाले ऐप्लिकेशन का इस्तेमाल करके, पक्का करें कि आपका Engage SDK टूल इंटिग्रेशन सही तरीके से काम कर रहा है. यह Android ऐप्लिकेशन, आपको अपने डेटा की पुष्टि करने और यह पक्का करने में मदद करने वाले टूल उपलब्ध कराता है कि ब्रॉडकास्ट इंटेंट सही तरीके से मैनेज किए जा रहे हैं.

पब्लिश एपीआई को शुरू करने के बाद, पुष्टि करने वाले ऐप्लिकेशन की जांच करके पुष्टि करें कि आपका डेटा सही तरीके से पब्लिश किया जा रहा है. आपका कंटिन्यूएशन क्लस्टर, ऐप्लिकेशन के इंटरफ़ेस में एक अलग लाइन के तौर पर दिखना चाहिए.

  • पक्का करें कि आपके ऐप्लिकेशन की Android मेनिफ़ेस्ट फ़ाइल में, Engage सेवा फ़्लैग को प्रोडक्शन पर सेट किया गया हो.
  • Engage Verify ऐप्लिकेशन इंस्टॉल करें और उसे खोलें
  • अगर isServiceAvailable false है, तो चालू करने के लिए "टॉगल करें" बटन पर क्लिक करें.
  • पब्लिश करने की प्रोसेस शुरू करने के बाद, पब्लिश किया गया डेटा अपने-आप देखने के लिए, अपने ऐप्लिकेशन का पैकेज नाम डालें.
  • अपने ऐप्लिकेशन में इन कार्रवाइयों की जांच करें:
    • साइन इन करें.
    • प्रोफ़ाइलों के बीच स्विच करें(अगर लागू हो).
    • वीडियो चलाएं, फिर उसे रोकें या होम पेज पर वापस जाएं.
    • वीडियो चलने के दौरान ऐप्लिकेशन बंद करें.
    • "देखना जारी रखें" लाइन से कोई आइटम हटाएं (अगर उपलब्ध हो).
  • हर कार्रवाई के बाद, पुष्टि करें कि आपके ऐप्लिकेशन ने publishContinuationClusters API को ट्रिगर किया है और पुष्टि करने वाले ऐप्लिकेशन में डेटा सही तरीके से दिख रहा है.
  • पुष्टि करने वाला ऐप्लिकेशन, सही तरीके से लागू की गई इकाइयों के लिए हरे रंग का "ठीक है" का निशान दिखाएगा.

    पुष्टि करने वाले ऐप्लिकेशन का स्क्रीनशॉट
    पहली इमेज. ऐप्लिकेशन की पुष्टि करने से जुड़ी जानकारी देने वाली वेबसाइट, Academy for App Success
  • पुष्टि करने वाला ऐप्लिकेशन, समस्या वाली इकाइयों को फ़्लैग करेगा.

    पुष्टि करने वाले ऐप्लिकेशन से जुड़ी गड़बड़ी का स्क्रीनशॉट
    दूसरी इमेज. पुष्टि करने वाले ऐप्लिकेशन से जुड़ी गड़बड़ी
  • जिन इकाइयों में गड़बड़ियां हैं उनकी समस्या हल करने के लिए, पुष्टि करने वाले ऐप्लिकेशन में इकाई को चुनें और उस पर क्लिक करें. आपकी समीक्षा के लिए, खास समस्याएं दिखेंगी और उन्हें लाल रंग में हाइलाइट किया जाएगा. उदाहरण के लिए, नीचे देखें.

    पुष्टि करने वाले ऐप्लिकेशन से जुड़ी गड़बड़ी की जानकारी
    तीसरी इमेज. पुष्टि करने वाले ऐप्लिकेशन से जुड़ी गड़बड़ी की जानकारी