# Launch ও Licentivo দিয়ে অ্যাপ ইন্টিগ্রেশন

এই নির্দেশিকা Licentivo প্রদানকারীর জন্য। Licentivo ছাড়া বিক্রেতার নিজস্ব লাইসেন্স সিস্টেম যুক্ত করতে [কাস্টম লাইসেন্সিং API ও ইন্টিগ্রেশন প্রক্রিয়া](/bn/launch-documents/external-licensing/) ব্যবহার করুন, পণ্য/পরিবেশে `custom_http` নির্বাচন করুন এবং ওই সিস্টেমের রানটাইম SDK বজায় রাখুন।

এই স্থানীয় অপ্রকাশিত পরিবর্তন অ্যাকাউন্ট পরিচয় বিনিময় ব্যবহার করে। মাইগ্রেশন ও সার্ভার সেশন প্রত্যাহারের জন্য [দায়িত্ব ও ক্রয়-সিঙ্ক চুক্তি](/bn/launch-documents/account-purchase-boundary/) দেখুন। এই পরিবর্তনে প্যাকেজ সংস্করণ নম্বর প্রকাশ বা আপগ্রেড হয়নি।

Launch বিক্রেতা অ্যাকাউন্ট, অর্ডার, মূল্য, নবায়ন/আপগ্রেড কোট, রিফান্ড ও নির্দিষ্ট কেনা তারিখের দায়িত্বে। Licentivo লাইসেন্স, নীতি, ডিভাইস ভাতা, অনুমোদন সেশন, স্বাক্ষরিত অনুমতি ও রানটাইম সিদ্ধান্তের দায়িত্বে। সফল Launch লগইন বা সিঙ্ক করা ক্রয় সুরক্ষিত কাজ চালানোর অনুমতি নয়।

সরাসরি সংযোগ কল ও পিন করা প্রকাশ্য পণ্য কী পেতে প্রশাসনিক ইন্টিগ্রেশন পৃষ্ঠা ব্যবহার করুন। নয়টি ভাষার র‍্যাপারে অফিসিয়াল SDK আছে। বিক্রেতার ব্যবস্থাপনা ও পেমেন্ট কী সার্ভারে থাকে। প্রকাশ্য পণ্য সেটিংয়ে গ্রাহক ক্রেডেনশিয়াল, ডিভাইস ID, ক্যাশ পাথ বা পরিচয় assertion নেই।

## অ্যাকাউন্ট বিনিময়

```mermaid
sequenceDiagram
    participant App as Application
    participant Launch as Launch server
    participant SDK as Official Licentivo SDK
    participant Lic as Licentivo server
    App->>Launch: Account login
    Launch-->>App: Account session
    App->>Launch: POST /software/products/{id}/identity
    Launch-->>App: Short-lived signed identity assertion
    App->>SDK: In-memory identity + connection + environment
    SDK->>Lic: POST /launch/exchange
    Lic-->>SDK: Restricted device credential + signed permission + logout ticket
    App->>SDK: RunFeature around every protected action
```

র‍্যাপার `POST /api/v1/software/products/{id}/identity`-তে `{"environment":"sandbox"}` বা `live` দিয়ে অনুরোধ করে। ফেরত পরিচয় assertion সর্বাধিক 120 সেকেন্ড স্থায়ী এবং নিবন্ধিত ইস্যুকারী, audience, বাস্তব লগইন সেশন, পণ্য, পরিবেশ ও ক্রয় রেফারেন্সে বাঁধা। এতে ফিচার গ্রান্ট, ডিভাইস ভাতা বা অফলাইন নীতি নেই।

অফিসিয়াল SDK মেমোরিতে এই মানগুলো পায়:

```json
{
  "product_id": "LICENTIVO_PRODUCT_UUID",
  "trusted_keys": {"SIGNING_KEY_ID": "PINNED_PUBLIC_KEY"},
  "launch_connection_id": "LICENTIVO_LAUNCH_CONNECTION_UUID",
  "environment": "sandbox",
  "identity_token": "SHORT_LIVED_ASSERTION_FROM_LAUNCH",
  "license_key": ""
}
```

এই রানটাইম কনফিগারেশন প্রকাশ্য ফাইলে লিখবেন না বা assertion অ্যাকাউন্ট রেকর্ডে স্থায়ী রাখবেন না। Launch v2 মনে রাখা রেকর্ড শুধু অ্যাকাউন্ট সেশন ও প্রকাশ্য রাউটিং প্রসঙ্গ রাখে। পুরোনো গ্রাহক `/credential` এন্ডপয়েন্ট HTTP 410 ফেরত দেয়।

## জীবনচক্র ও স্টোরেজ

- `Login`: অ্যাকাউন্ট প্রমাণীকরণ করুন, নতুন assertion অনুরোধ করুন, অফিসিয়াল SDK শুরু করুন।
- `Restore`: মনে রাখা অ্যাকাউন্ট অনলাইনে নিশ্চিত করুন, নতুন assertion অনুরোধ করুন, অফিসিয়াল SDK শুরু করুন। Launch বিভ্রাট অফলাইন অনুমতি নির্বাচন করে না।
- `RunFeature`: প্রতিটি সুরক্ষিত নির্বাহ অফিসিয়াল SDK-কে দিন। প্রত্যাখ্যাত কলব্যাক কখনো চলবে না।
- `Close` / `Dispose` / `Drop`: ব্যাকগ্রাউন্ড কাজ থামিয়ে ইচ্ছাকৃত মনে রাখা লগইন ও নোড বাইন্ডিং বজায় রাখুন।
- `Logout`: অফিসিয়াল SDK ইউনিফায়েড লগআউট চালান, তারপর Launch অ্যাকাউন্ট রেকর্ড পরিষ্কার ও সেশন শেষ করুন।
- `ReleaseDevice`: স্পষ্ট লগআউটের সামঞ্জস্য উপনাম। অপেক্ষমাণ দূরবর্তী প্রত্যাহার সত্যভাবে জানান।

শুধু অফিসিয়াল SDK তার ডিভাইস ক্রেডেনশিয়াল ও লিজ ফাইল সরায়। তার ক্যাশ ডিরেক্টরি বা `.logout.json` কখনো মুছবেন না: এই জার্নালে ব্যর্থ নেটওয়ার্ক অনুরোধের পরে প্রয়োজনীয় সীমিত রিলিজ টিকিট থাকে। সংশ্লিষ্ট ক্যাশ আবার ইনিশিয়ালাইজ হলে SDK অপেক্ষমাণ টিকিট পুনরায় চালায়। Launch-এর নিজস্ব অ্যাকাউন্ট স্টোরেজ ও SDK স্টোরেজের মালিক পৃথক।

অফলাইন শুরু প্রয়োজন এমন অ্যাপ অফিসিয়াল SDK-এর নথিভুক্ত পুনরুদ্ধার প্রক্রিয়া ব্যবহার করে। শুধু SDK স্বাক্ষরিত অনুমতি, পণ্য/পরিবেশ প্রসঙ্গ, মেয়াদ, ঘড়ির আচরণ ও ডিভাইস অবস্থা যাচাই করে। Launch র‍্যাপার কেনা তারিখ, স্থানীয় অর্ডার বা ফাইলের উপস্থিতি থেকে অনুমতি অনুমান করে না।

শুধু-মেমোরি অ্যাকাউন্ট সেশন ডিফল্ট। স্থায়ী অ্যাকাউন্ট স্টোরকে রেকর্ড এনক্রিপ্ট/প্রমাণীকরণ এবং OS ক্রেডেনশিয়াল সুবিধা দিয়ে কী সুরক্ষিত করতে হবে। প্রতি বিক্রেতা, অ্যাকাউন্ট, পণ্য ও পরিবেশে পৃথক লেখাযোগ্য ক্যাশ ব্যবহার করুন। ব্রাউজার রেন্ডারার ডেস্কটপ অ্যাকাউন্ট টোকেন, assertion বা ডিভাইস ক্রেডেনশিয়ালের বদলে ব্যবসায়িক ফল পাবে।

## ক্রয় ও ডিভাইস

Launch যাচাইকৃত পেমেন্ট ও অপরিবর্তনীয় অর্ডার কভারেজ থেকে নির্দিষ্ট ক্রয়ের তারিখ গণনা করে, তারপর সংস্করণযুক্ত স্ন্যাপশট `/api/v1/launch/connections/{id}/events`-এ পাঠায়। `applied` পর্যন্ত ইভেন্ট জিজ্ঞাসা করে; শুধু রসিদ পূরণ নয়। নবায়ন ও রিফান্ড পুনঃপ্রচেষ্টা মেয়াদ দ্বিতীয়বার যোগ করতে পারে না। রিফান্ড শুধু সংশ্লিষ্ট অর্ডারের কভারেজ সরায়; সম্পূর্ণ রিফান্ড করা ক্রয় পুনঃক্রয়ে নতুন রেফারেন্স পায়।

ডিভাইসে প্রবেশ নেই এমন ব্যবহারকারী Launch-এর ডিভাইস ব্যবস্থাপনা পৃষ্ঠা খুলতে পারেন। তালিকা, অবশিষ্ট রিলিজ, অনুমত কাজ ও ফল Licentivo থেকে আসে। রিলিজে প্রদর্শিত বাইন্ডিং জেনারেশন ও অপরিবর্তিত কাজ ID থাকে। Launch প্রতিযোগী রিলিজ কাউন্টার বা কাজ নির্বাহক রাখে না।

## যাচাই ও সীমাবদ্ধতা

অ্যাকাউন্ট বিনিময়, স্বল্পস্থায়ী assertion স্টোরেজ, SDK-নিয়ন্ত্রিত ফিচার নির্বাহ, সাধারণ বন্ধ, নতুন প্রক্রিয়ায় স্পষ্ট লগআউট, অপেক্ষমাণ রিলিজ জার্নাল ও পণ্য/পরিবেশ বিচ্ছিন্নতা পরীক্ষা করুন। অফিসিয়াল SDK-এর বাস্তব স্বাক্ষরিত লিজ, অফলাইন পরীক্ষা ও বিকৃতি প্রত্যাখ্যান Launch অ্যাকাউন্ট পরিবহন থেকে আলাদাভাবে পরীক্ষা করুন। কম্পাইল ও ফিক্সচার উৎপাদন গ্রহণযোগ্যতা প্রমাণ করে না।

Launch ডেস্কটপ লগআউট, জোরপূর্বক সেশন লগআউট, পাসওয়ার্ড বদল ও অ্যাকাউন্ট নিষ্ক্রিয়তায় Licentivo V39-এর `session-revocations` POST ও রসিদ GET এন্ডপয়েন্টও ব্যবহার করে। এটি মূল প্রাপক ও অনুরোধ স্থায়ীভাবে স্থির করে, হারানো প্রতিক্রিয়া পুনরুদ্ধার করে ও প্রতিটি পরিবেশ স্বাধীনভাবে নিশ্চিত করে। অপেক্ষমাণ অ্যাকাউন্ট-ব্যাপী বিজ্ঞপ্তি নতুন ডেস্কটপ প্রমাণীকরণ থামায়; নিশ্চিত হওয়ার পর বাস্তব নতুন লগইনের `auth_time` সর্বশেষ `revoked_before` সেকেন্ডের কঠোরভাবে পরে হবে। ওয়েবসাইট পুনরুদ্ধার উপলব্ধ থাকে। বিজ্ঞপ্তিগুলো ক্রয়ের তারিখ বদলায় না। [সীমা ও পুনরুদ্ধার চুক্তি](/bn/launch-documents/account-purchase-boundary/) দেখুন।

[ম্যানুয়াল ইন্টিগ্রেশন](/bn/launch-documents/manual-integration/), [AI ইন্টিগ্রেশন](/bn/launch-documents/ai-integration/), [ইন্টিগ্রেশন প্যাকেজ](/bn/launch-documents/integration-packages/) ও [গ্রহণযোগ্যতা](/bn/launch-documents/acceptance/) দেখুন।
