অ্যান্ড্রয়েড ডেভেলপার আইডি স্ট্যাটাস এপিআই ব্যবহার করে অ্যাপ রেজিস্ট্রেশনের অবস্থা যাচাই করুন।

কোনো অ্যান্ড্রয়েড অ্যাপ প্যাকেজ নেম কোনো যাচাইকৃত ডেভেলপারের নামে নিবন্ধিত আছে কিনা তা যাচাই করতে অ্যান্ড্রয়েড ডেভেলপার স্ট্যাটাস এপিআই (Android Developer Status API) ব্যবহার করুন। আপনি যদি সফটওয়্যার ডেভেলপমেন্ট টুল, আইডিই (IDE), বা স্বয়ংক্রিয় সিআই/সিডি (CI/CD) ওয়ার্কফ্লো তৈরি করেন, তবে নিম্নলিখিত কাজগুলো করার জন্য এই সার্ভার-টু-সার্ভার এপিআই-টি ইন্টিগ্রেট করতে পারেন:

  • অ্যাপ প্যাকেজ নামটি কোনো যাচাইকৃত ডেভেলপারের নামে নিবন্ধিত কিনা তা যাচাই করুন।
  • অ্যাপের সাইনিং সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্টটি নিবন্ধিত প্যাকেজ নামের জন্য ফাইলে থাকা ক্রেডেনশিয়ালগুলির সাথে মেলে কিনা তা যাচাই করুন।
  • আপনার টুলের ইন্টারফেসের মধ্যেই ডেভেলপারদেরকে অ্যান্ড্রয়েড ডেভেলপার ভেরিফিকেশন প্রোগ্রামে অপরিচিত অ্যাপগুলো নিবন্ধন করার জন্য অনুরোধ করুন।

এই এপিআইটি বিভিন্ন ডেভেলপার ওয়ার্কফ্লো সমর্থন করার জন্য ডিজাইন করা হয়েছে:

ব্যবহারের ক্ষেত্র বর্ণনা এপিআই এন্ডপয়েন্ট
প্যাকেজের নামের যোগ্যতা কোনো প্যাকেজ নাম আগে থেকেই নিবন্ধিত আছে কিনা তা যাচাই করা হচ্ছে। যদি প্যাকেজ নামটি কোনো যাচাইকৃত ডেভেলপারের সাথে যুক্ত থাকে, তবে REGISTERED রিটার্ন করে, অন্যথায় NOT_REGISTERED CheckPackageRegistrationStatus
অ্যাপটি নিবন্ধিত হয়েছে। একটি নির্দিষ্ট প্যাকেজ নাম এবং সার্টিফিকেট ফিঙ্গারপ্রিন্ট জোড়া নিবন্ধিত আছে কিনা তা যাচাই করা হচ্ছে। প্যাকেজ নাম এবং সার্টিফিকেট ফিঙ্গারপ্রিন্ট জোড়াটি নিবন্ধিত থাকলে REGISTERED , নিবন্ধিত না থাকলে NOT_REGISTERED , অথবা প্যাকেজ নামটি একটি ভিন্ন সার্টিফিকেট ফিঙ্গারপ্রিন্ট দিয়ে নিবন্ধিত থাকলে REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT রিটার্ন করে। CheckPackageRegistrationStatus

এই নির্দেশিকায় নিম্নলিখিত কাজগুলি কীভাবে সম্পন্ন করতে হয় তা ব্যাখ্যা করা হয়েছে:

  1. গুগল ক্লাউড এপিআই অ্যাক্সেস এবং প্রমাণীকরণ সেট আপ করুন।
  2. যাচাই করুন যে, কোনো অ্যাপের প্যাকেজ নেম এবং পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট জোড়াটি, কোনো যাচাইকৃত ডেভেলপার দ্বারা, প্রদত্ত পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট অথবা একটি ভিন্ন পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট ব্যবহার করে অ্যান্ড্রয়েড ডেভেলপার ভেরিফিকেশন প্রোগ্রামে নিবন্ধিত হয়েছে কি না।
  3. আপনার IDE বা ডেভেলপার টুলের ওয়ার্কফ্লোতে API রেজিস্ট্রেশন অবস্থাগুলো পরিচালনা করুন।

পূর্বশর্ত

এই ডকুমেন্টটি অ্যান্ড্রয়েড অ্যাপ ডেভেলপার অথবা সফটওয়্যার ডেভেলপমেন্ট টুল ডেভেলপারদের জন্য। কাজ শুরু করার আগে আপনার নিম্নলিখিত বিষয়গুলো জানা থাকা উচিত:

  • একটি গুগল ক্লাউড প্রকল্পে প্রশাসনিক প্রবেশাধিকার।
  • RESTful API, JSON, এবং SHA-256 সার্টিফিকেট ফিঙ্গারপ্রিন্ট সম্পর্কে প্রাথমিক ধারণা।

নিম্নলিখিত পরিভাষাগুলোর সাথেও আপনার পরিচিত থাকা উচিত:

মেয়াদ সংজ্ঞা
অ্যান্ড্রয়েড ডেভেলপার যাচাইকরণ অ্যান্ড্রয়েড ডেভেলপার ভেরিফিকেশন একটি নতুন আবশ্যকতা, যা ব্যক্তি ও প্রতিষ্ঠানের মতো বাস্তব সত্তাগুলোকে তাদের অ্যান্ড্রয়েড অ্যাপের সাথে সংযুক্ত করার জন্য তৈরি করা হয়েছে। অনুমোদিত অ্যান্ড্রয়েড ডিভাইসে ব্যবহারকারীদের দ্বারা অ্যাপ ইনস্টল করার জন্য, অ্যান্ড্রয়েড কর্তৃপক্ষ সকল অ্যাপকে যাচাইকৃত ডেভেলপারদের দ্বারা নিবন্ধিত করার শর্ত আরোপ করবে।
সার্টিফিকেট ফিঙ্গারপ্রিন্ট অ্যাপটিতে স্বাক্ষর করতে ব্যবহৃত পাবলিক সার্টিফিকেটের SHA-256 হ্যাশ।
নিবন্ধন রাজ্য কোনো অ্যাপের প্যাকেজ নেম অথবা অ্যাপের প্যাকেজ নেম ও পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট জোড়ার জন্য API দ্বারা ফেরত দেওয়া স্ট্যাটাস। এই অবস্থাটি নির্ধারণ করে দেয় যে আপনাকে কী পদক্ষেপ নিতে হবে (উদাহরণস্বরূপ, REGISTERED , NOT_REGISTERED )।

পরিষেবা শেষবিন্দু

সার্ভিস এন্ডপয়েন্ট হলো একটি বেস ইউআরএল যা কোনো এপিআই সার্ভিসের নেটওয়ার্ক অ্যাড্রেস নির্দিষ্ট করে। এই সার্ভিসটির নিম্নলিখিত সার্ভিস এন্ডপয়েন্ট রয়েছে, এবং সমস্ত ইউআরআই এই সার্ভিস এন্ডপয়েন্টের সাপেক্ষে নির্ধারিত হয়:

https://androiddeveloperidstatus.googleapis.com

এপিআই সক্রিয় করুন

অ্যান্ড্রয়েড ডেভেলপার আইডি স্ট্যাটাস এপিআই ব্যবহার করার জন্য, আপনাকে একটি প্রজেক্ট তৈরি এবং এপিআই সক্রিয় করার সেটআপ ধাপগুলো সম্পন্ন করতে হবে।

একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন

  1. আপনার যদি গুগল ক্লাউড অ্যাকাউন্ট না থাকে, তাহলে একটি তৈরি করুন।
  2. গুগল ক্লাউড কনসোলটি খুলুন।
  3. একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন।

আপনার প্রোজেক্টে API সক্রিয় করুন।

  1. Google Cloud কনসোলে, APIs & Services > Library- তে যান।
  2. ড্রপ-ডাউন মেনু থেকে আপনার প্রজেক্টটি নির্বাচন করুন।
  3. অ্যান্ড্রয়েড ডেভেলপার আইডি স্ট্যাটাস এপিআই (API) অনুসন্ধান করুন।
  4. সক্ষম করুন -এ ক্লিক করুন।

প্রমাণীকরণ করুন

এপিআইটি এপিআই কী ক্রেডেনশিয়াল সমর্থন করে। একটি এপিআই কী পেতে:

  1. Google Cloud কনসোলে, APIs & Services > Credentials- এ যান।
  2. + Create credentials-এ ক্লিক করুন এবং API key নির্বাচন করুন।
  3. কী-টি কনফিগার করে কপি করুন। আপনার রিকোয়েস্ট হেডারে এই কী-টি ব্যবহার করুন।

অ্যাপ নিবন্ধনের অবস্থা যাচাই করুন

আপনি শুধুমাত্র একটি প্যাকেজের নাম যাচাই করতে, অথবা একটি নির্দিষ্ট সার্টিফিকেট ফিঙ্গারপ্রিন্টের সাথে প্যাকেজের নাম মিলিয়ে পরীক্ষা করতে PackageRegistrationStatus রিসোর্সটি কোয়েরি করতে পারেন।

প্যাকেজের নাম যাচাই করুন

কোনো অ্যাপ প্যাকেজ নেম কোনো যাচাইকৃত ডেভেলপার দ্বারা নিবন্ধিত কিনা তা পরীক্ষা করতে, ঐচ্ছিক প্যারামিটার ছাড়া packageRegistrationStatus:check এন্ডপয়েন্টে অ্যান্ড্রয়েড অ্যাপটির প্যাকেজ নেম (যেমন, com.example.app ) সহ একটি অথেনটিকেটেড GET রিকোয়েস্ট পাঠান।

অনুরোধ:

curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check" \
  -H "X-Goog-Api-Key: [key]"

ফলাফল

প্রতিক্রিয়া (নিবন্ধিত):

প্যাকেজের নামটি নিবন্ধিত থাকলে, আপনি HTTP রেসপন্স কোড 200 সহ নিম্নলিখিত HTTP রেসপন্স বডিটি পাবেন:

{
  "name": "packages/com.example.app/packageRegistrationStatus",
  "state": "REGISTERED"
}

সুপারিশকৃত পদক্ষেপ: ডেভেলপারকে জানান যে প্যাকেজ নামটি ইতিমধ্যেই নিবন্ধিত আছে।

প্রতিক্রিয়া (নিবন্ধিত নয়):

প্যাকেজের নামটি নিবন্ধিত না থাকলে, আপনি HTTP রেসপন্স কোড 200 সহ নিম্নলিখিত HTTP রেসপন্স বডিটি পাবেন:

{
  "name": "packages/com.example.app/packageRegistrationStatus",
  "state": "NOT_REGISTERED"
}

প্যাকেজের নাম এবং সার্টিফিকেটের ফিঙ্গারপ্রিন্ট জোড়া যাচাই করুন

কোনো অ্যাপ প্যাকেজ নেম একটি নির্দিষ্ট পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্টের সাথে নিবন্ধিত আছে কিনা তা পরীক্ষা করতে, certificateFingerprint কোয়েরি প্যারামিটারটি পাস করুন:

অনুরোধ:

curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check?certificateFingerprint=d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06" \
  -H "X-Goog-Api-Key: [key]"

ফলাফল

প্রতিক্রিয়া (সঠিক সার্টিফিকেটের আঙুলের ছাপের সাথে মিলে যাওয়ায় নিবন্ধিত):

যদি প্যাকেজের নামটি সরবরাহকৃত পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট দিয়ে নিবন্ধিত থাকে, তাহলে আপনি HTTP রেসপন্স কোড 200 সহ নিম্নলিখিত HTTP রেসপন্স বডিটি পাবেন:

{
  "name": "packages/com.example.app/packageRegistrationStatus",
  "state": "REGISTERED"
}

প্রতিক্রিয়া (ভিন্ন সার্টিফিকেট ফিঙ্গারপ্রিন্ট দিয়ে নিবন্ধিত):

যদি প্যাকেজের নামটি প্রদত্ত সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট থেকে ভিন্ন কোনো ফিঙ্গারপ্রিন্ট দিয়ে নিবন্ধিত থাকে, তাহলে আপনি HTTP রেসপন্স কোড 200 সহ নিম্নলিখিত HTTP রেসপন্স বডিটি পাবেন:

{
  "name": "packages/com.example.app/packageRegistrationStatus",
  "state": "REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT"
}

প্রতিক্রিয়া (নিবন্ধিত নয়):

যদি প্যাকেজের নামটি প্রদত্ত পাবলিক সার্টিফিকেটের SHA-256 ফিঙ্গারপ্রিন্ট দিয়ে নিবন্ধিত না থাকে, তাহলে আপনি HTTP রেসপন্স কোড 200 সহ নিম্নলিখিত HTTP রেসপন্স বডিটি পাবেন:

{
  "name": "packages/com.example.app/packageRegistrationStatus",
  "state": "NOT_REGISTERED"
}

জাভা বাস্তবায়নের উদাহরণ

নিম্নলিখিত জাভা ক্লাসটি দেখায় কিভাবে জাভা ১১-এর স্ট্যান্ডার্ড HttpClient ব্যবহার করে এপিআই কল করতে হয়।

import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;

public class DeveloperIdStatusClient {

  private static final String API_ENDPOINT = "https://androiddeveloperidstatus.googleapis.com";

  public static void main(String[] args) {
    String apiKey = "YOUR_API_KEY";
    String packageName = "com.example.app";
    String certificateFingerprint = "d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06";

    try {
      String response = checkPackageRegistrationStatus(apiKey, packageName, certificateFingerprint);
      System.out.println("Response: " + response);
    } catch (IOException | InterruptedException e) {
      e.printStackTrace();
    }
  }

  /**
   *   Checks the registration status of an Android package.
   *
   *   @param apiKey The Google API key for authentication.
   *   @param packageName The fully-qualified Android package name (for example, "com.example.app").
   *   @param certificateFingerprint Optional SHA-256 certificate fingerprint. Pass null or empty to omit.
   *   @return The JSON response string from the API.
   */
  public static String checkPackageRegistrationStatus(
      String apiKey, String packageName, String certificateFingerprint)
      throws IOException, InterruptedException {

    // 1. Build the URL path (accepts dots directly)
    // Format: /v1/packages/{package}/packageRegistrationStatus:check
    String path = String.format("/v1/packages/%s/packageRegistrationStatus:check", packageName);

    // 2. Build query parameters (only certificateFingerprint if provided)
    StringBuilder queryBuilder = new StringBuilder();
    if (certificateFingerprint != null && !certificateFingerprint.isEmpty()) {
      queryBuilder.append("certificateFingerprint=")
          .append(URLEncoder.encode(certificateFingerprint, StandardCharsets.UTF_8));
    }

    String fullUrl = API_ENDPOINT + path;
    if (queryBuilder.length() > 0) {
      fullUrl += "?" + queryBuilder.toString();
    }

    // 3. Create and send the HTTP GET request with API Key header
    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create(fullUrl))
        .header("Accept", "application/json")
        .header("X-Goog-Api-Key", apiKey)
        .GET()
        .build();

    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

    if (response.statusCode() != 200) {
      throw new IOException("Unexpected response code: " + response.statusCode() + ", body: " + response.body());
    }

    return response.body();
  }
}

রেজিস্ট্রেশন অবস্থা এবং ত্রুটি পরিচালনা বুঝুন

যখন কোনো এপিআই অনুরোধ ব্যর্থ হয়, তখন অ্যান্ড্রয়েড ডেভেলপার আইডি স্ট্যাটাস এপিআই রেসপন্স বডিতে একটি স্ট্যান্ডার্ড গুগল ক্লাউড JSON এরর অবজেক্ট ফেরত দেয়। এই অবজেক্টটি ত্রুটি বোঝা এবং তা পরিচালনা করার জন্য একটি সামঞ্জস্যপূর্ণ কাঠামো প্রদান করে।

ত্রুটির প্রতিক্রিয়ার উদাহরণ:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

এরর অবজেক্টটিতে নিম্নলিখিত কী ফিল্ডগুলো রয়েছে:

  • code : HTTP স্ট্যাটাস কোড (উদাহরণস্বরূপ, 400 , 403 , 500 )।
  • message : ত্রুটিটির একটি ডেভেলপার-বান্ধব ইংরেজি বিবরণ। এই বার্তাটি স্থিতিশীল নয় এবং পরিবর্তিত হতে পারে, তাই এটিকে কেন্দ্র করে পার্সিং লজিক তৈরি করবেন না।
  • status : একটি প্রমিত ত্রুটি কোড যা প্রোগ্রামগতভাবে ত্রুটির ধরন শনাক্ত করে (উদাহরণস্বরূপ, INVALID_ARGUMENT , PERMISSION_DENIED )। আপনার ত্রুটি পরিচালনা করার লজিকটি এই স্থিতিশীল শনাক্তকারীর উপর ভিত্তি করে তৈরি হওয়া উচিত।

নিম্নলিখিত সারণিতে এপিআই দ্বারা প্রাপ্ত সবচেয়ে সাধারণ ত্রুটিগুলো এবং প্রস্তাবিত করণীয় তালিকাভুক্ত করা হয়েছে।

HTTP অবস্থা ক্যানোনিকাল ত্রুটি কোড ( status ) অর্থ এবং সাধারণ কারণ সুপারিশকৃত পদক্ষেপ পুনরায় চেষ্টা করা যেতে পারে?
400 ত্রুটিপূর্ণ অনুরোধ INVALID_ARGUMENT অনুরোধটি ত্রুটিপূর্ণ ছিল। পুনরায় চেষ্টা করবেন না। নির্দিষ্ট ফিল্ড লঙ্ঘনটি শনাক্ত করতে ত্রুটি প্রতিক্রিয়ার বিবরণ ফিল্ডটি পরীক্ষা করুন। অনুরোধ পেলোডটি সংশোধন করে আবার পাঠান। না
401 অননুমোদিত UNAUTHENTICATED অ্যাক্সেস টোকেনটি অনুপস্থিত, মেয়াদোত্তীর্ণ বা অবৈধ। অবিলম্বে পুনরায় চেষ্টা করবেন না। নিশ্চিত করুন যে আপনি সঠিক অ্যাক্সেস টোকেন বা কী ব্যবহার করছেন। না
403 নিষিদ্ধ PERMISSION_DENIED আপনাকে প্রমাণীকরণ করা হয়েছে, কিন্তু আপনার প্রজেক্টের এপিআই (API) অ্যাক্সেস করার অনুমতি নেই। এর সবচেয়ে সাধারণ কারণ হলো, আপনি আপনার গুগল ক্লাউড প্রজেক্টে এপিআই (API) সক্রিয় করেননি। পুনরায় চেষ্টা করবেন না। আপনি সঠিক প্রজেক্ট আইডি ব্যবহার করছেন এবং এপিআই (API) সক্রিয় আছে কিনা তা যাচাই করুন। না
429 অতিরিক্ত অনুরোধ RESOURCE_EXHAUSTED আপনি আপনার প্রকল্পের জন্য নির্ধারিত এপিআই কোটা অতিক্রম করেছেন। অনুরোধ পাঠানো বন্ধ করুন এবং কিছুক্ষণ পর আবার চেষ্টা করুন। গুগল ক্লাউড কনসোলে আপনার প্রোজেক্টের কোটা পরীক্ষা করুন। হ্যাঁ
500 অভ্যন্তরীণ সার্ভার ত্রুটি INTERNAL গুগলের সার্ভারগুলোতে একটি অপ্রত্যাশিত ত্রুটি ঘটেছে। এটি সম্ভবত একটি সাময়িক সমস্যা। এক্সপোনেনশিয়াল ব্যাকঅফ স্ট্র্যাটেজি ব্যবহার করে অনুরোধটি পুনরায় চেষ্টা করুন। ত্রুটি অব্যাহত থাকলে, সাপোর্টে যোগাযোগ করুন। হ্যাঁ
503 পরিষেবা অনুপলব্ধ UNAVAILABLE পরিষেবাটি সাময়িকভাবে অনুপলব্ধ। এক্সপোনেনশিয়াল ব্যাকঅফ স্ট্র্যাটেজি ব্যবহার করে অনুরোধটি পুনরায় চেষ্টা করুন। হ্যাঁ

কোটার সীমা

পরিষেবার নির্ভরযোগ্যতা নিশ্চিত করার জন্য প্রকল্প-ভিত্তিক ব্যবহারের কোটা প্রয়োগ করা হয়।

এপিআই পদ্ধতি ডিফল্ট সীমা (প্রকল্প প্রতি) নোট
CheckPackageRegistrationStatus প্রতিদিন ১,০০০ অনুরোধ অপব্যবহার রোধ করার জন্য কলারদের অভ্যন্তরীণ রেট লিমিটিং পরিচালনা করতে হবে।

আপনার ব্যবহার নিরীক্ষণ করুন

আপনি সরাসরি গুগল ক্লাউড কনসোলে আপনার প্রোজেক্টের বর্তমান এপিআই ব্যবহার নিরীক্ষণ করতে পারেন এবং দেখতে পারেন যে আপনি আপনার কোটার সীমার কতটা কাছাকাছি আছেন।

  1. এপিআই ও পরিষেবা > ড্যাশবোর্ড পৃষ্ঠায় যান।
  2. অ্যান্ড্রয়েড ডেভেলপার আইডি স্ট্যাটাস এপিআই নির্বাচন করুন।
  3. কোটা ট্যাবে ক্লিক করুন।

এই ড্যাশবোর্ডটি সময়ের সাথে সাথে আপনার অনুরোধের পরিমাণের একটি বিশদ বিবরণ প্রদান করে।