# دستی ترقی کی انضمام رہنمائی (9 زبانیں، AI ضروری نہیں)

یہ رہنمائی Licentivo فراہم کنندہ کے لیے ہے۔ دوسرے لائسنسنگ سسٹم والے مرچنٹ پس منظر میں “لائسنس انتخاب اور تخصیص” سے کسٹم سروس منتخب کر کے [کسٹم لائسنس API اور انضمام کے عمل](/ur/launch-documents/external-licensing/) سے جڑ سکتے ہیں اور اپنے لائسنسنگ سسٹم کا SDK استعمال جاری رکھ سکتے ہیں۔

> موجودہ غیر شائع شدہ تبدیلیاں اکاؤنٹ شناختی تبادلہ استعمال کرتی ہیں؛ ذمہ داریاں اور منتقلی کی پابندیاں [خریداری کی مدت اور اکاؤنٹ SDK کی حد](/ur/launch-documents/account-purchase-boundary/) میں دیکھیں۔ Launch خریداری مدت گنتا ہے؛ Licentivo SDK اجازت نافذ کرتا ہے۔

صرف متعلقہ زبان کا Launch انضمامی پیکیج انسٹال کریں۔ Launch پیکیج میں سرکاری SDK، طے شدہ اڈاپٹر اور لنک ترتیب شامل ہیں؛ سرکاری لائسنسنگ پتہ `https://www.licentivo.com` مقرر ہے۔ ایپ خریدار کے موجودہ Launch اسٹور میں رجسٹرڈ اکاؤنٹ سے لاگ ان کرتی ہے۔

## پہلے سے پُر شدہ ابتدائی کوڈ حاصل کریں

1. Launch پس منظر میں سافٹ ویئر، سیلز پلان اور Licentivo لائسنس پالیسی کا تعلق مکمل کر کے متعلقہ ماحول میں شائع کریں۔
2. **پروگرام انضمام → انضمام کی جانچ اور کوڈ** کھولیں، سافٹ ویئر، زبان اور آزمائشی/پروڈکشن ماحول منتخب کریں۔
3. “پروڈکٹ کی معلومات پڑھیں اور انضمامی کوڈ بنائیں” پر کلک کریں۔ Launch سائٹ کا موجودہ عوامی پتہ، موجودہ پروڈکٹ میپنگ اور دستخطی عوامی کلید خود پڑھتا ہے۔
4. صفحے کا کنکشن فنکشن اپنے پروجیکٹ میں کاپی کریں اور نیچے کے مطابق انٹرفیس اور کاروباری کال دستی لکھیں۔ خود بھری اقدار دیکھ کر متعلقہ زبان کا `Connect/connect` خود بھی کال کر سکتے ہیں۔

دو اندرونی پروڈکٹ ID دستی بھرنے یا `launch-config.json` یا `product.json` بنانے کی ضرورت نہیں۔ صفحے سے سورس کنکشن فنکشن محفوظ کیا جا سکتا ہے۔ سرور کا نجی `config.yaml` صرف Launch سروس شروع کرنے کے لیے ہے، گاہک کے سافٹ ویئر کے ساتھ شائع نہیں ہو سکتا۔

سائٹ کا پتہ موجودہ انسٹینس کے درست عوامی پتے سے آتا ہے (آغاز ترتیب `public_url` یا پس منظر ویب سائٹ ترتیبات کا درست عوامی پتہ)۔ یہ ڈومین یا پورٹ سمیت IP پتہ ہو سکتا ہے، مگر پروٹوکول لازم ہے؛ پروڈکشن میں درست HTTPS استعمال کریں۔ سننے کا پتہ `http_addr` گاہک کی رسائی کا پتہ نہیں۔ سائٹ پتہ، پروڈکٹ میپنگ یا ماحول بدلنے پر موجودہ سائٹ سے کنکشن فنکشن دوبارہ لیں؛ پرانی سائٹ کا سیشن اور کیش نئی سائٹ کی اجازت نہیں بن سکتے۔

دو پروڈکٹ نمبر سسٹم کا موجودہ اندرونی تعلق ہیں: Launch سافٹ ویئر پروڈکٹ اور Licentivo لائسنس پروڈکٹ۔ انضمام صفحہ منتخب سافٹ ویئر سے خود بھرتا ہے؛ خریدار صرف اسٹور اکاؤنٹ دیتا ہے۔ سرور ترتیب شدہ Licentivo کنکشن سے دستخطی عوامی کلید پڑھتا ہے، انتظامی کلید اور گاہک کی لائسنس اسناد سورس میں نہیں آتیں۔

## `Connect/connect` کا کردار

`Connect/connect` مختلف زبانوں میں “Launch ایپ کلائنٹ بنائیں” کے عمل کا نام ہے۔ Go، C# اور بعض مقامی انٹرفیس بڑے ابتدائی حرف کے ساتھ `Connect` استعمال کرتے ہیں، Python، JavaScript، Ruby وغیرہ اپنے انداز میں `connect` استعمال کرتے ہیں۔ پس منظر سے بنے `connectLaunch()`, `connect_launch()` یا `LaunchConnection.Open()` عوامی پیرامیٹر پہلے سے بھرے پروجیکٹ فنکشن ہیں، جو اندر متعلقہ زبان کا انٹری پوائنٹ کال کرتے ہیں۔

کنکشن صرف ابتدائی ترتیب مکمل کرتا ہے: اسٹور پتہ، پروڈکٹ میپنگ، ماحول اور دستخطی عوامی کلید جانچتا ہے، Launch کلائنٹ بناتا ہے اور پیکیج کا سرکاری Licentivo SDK ترتیب دیتا ہے۔ یہ گاہک کی شناخت نہیں جانچتا اور براہ راست معاوضہ فیچرز نہیں کھولتا۔ مکمل ترتیب:

```text
Connect/connect → Login or Restore → RunFeature → Logout / Close
                                       └──────────→ ReleaseDevice (explicit device unlink only)
```

ایپ چلنے کے دوران ایک ہی کلائنٹ آبجیکٹ برقرار رکھیں تاکہ SDK ہارٹ بیٹ اور فلوٹنگ سیٹس درست سنبھالے۔ عام بندش ڈیوائس بائنڈنگ برقرار رکھتی ہے؛ گاہک کا واضح لاگ آؤٹ اور ReleaseDevice مطابقتی راستہ ایک ہی سرکاری SDK لاگ آؤٹ عمل کال کرتے ہیں۔

## انسٹالیشن اور ابتدائی ترتیب کے راستے

0.1.6 کی نو زبانوں کی عوامی انسٹالیشن جانچ مکمل کامیاب ہے (9/9)، نیچے جدول کے تمام طریقے جانچے گئے ہیں۔ [GitHub Release](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6) مقامی پیکیج اور آف لائن فائلیں بھی دیتا ہے؛ استعمال [ڈاؤن لوڈ پیکیج کی انسٹالیشن ہدایات](/ur/launch-documents/integration-packages/#install-a-downloaded-distribution) میں دیکھیں۔

| زبان | صرف Launch انسٹال کریں | صفحے کا فراہم کردہ کنکشن فنکشن | پیکیج میں براہ راست ابتدائی API |
| --- | --- | --- | --- |
| Go | `go get github.com/spf86/licentivo-launch-sdk/pkg/launchclient@v0.1.6` | `connectLaunch()` | `launchclient.Connect` |
| Python 3.10+ | `python -m pip install licentivo-launch==0.1.6` | `connect_launch()` | `Application.connect` |
| C# / .NET 8+ | `dotnet add package Licentivo.Launch --version 0.1.6` | `LaunchConnection.Open()` | `Application.Connect` |
| Java 17+ | Maven/Gradle: `com.licentivo.launch:launch-client:0.1.6` | `LaunchConnection.open()` | `Launch.connect` |
| Node.js 20.3+ | `npm install @licentivo/launch@0.1.6` | `connectLaunch()` | `Application.connect` |
| Rust 1.85+ | `cargo add licentivo-launch@=0.1.6` | `connect_launch()` | `Application::connect` |
| Ruby 3.1+ | `gem install licentivo-launch --version 0.1.6` | `connect_launch` | `Application.connect` |
| C11 | [GitHub Release](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6) سے مقامی پیکیج ڈاؤن لوڈ کریں اور CMake سے درآمد کریں | `connect_launch()` | `launch_application_connect` |
| C++17 | وہی Launch مقامی پیکیج استعمال کریں | `connectLaunch()` | `Application::Connect` |

عوامی سورس اور ہر زبان کا README [Launch SDK ذخیرہ](https://github.com/spf86/licentivo-launch-sdk) میں، مقامی پیکیج اور آف لائن فائلیں [v0.1.6 Release](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6) میں اور عوامی انسٹالیشن نتائج [نو زبانوں کی رجسٹری جانچ](https://github.com/spf86/licentivo-launch-sdk/blob/main/docs/registry-verification.json) میں ہیں۔ ہر پیکیج کا README انسٹالیشن کمانڈ اور API دیتا ہے۔ JavaScript پیکیج میں TypeScript اعلانات ہیں۔ عام زبان کی dependencies پیکیج مینیجر حل کرتا ہے، مثلاً Python کا cryptography، C# کا BouncyCastle اور Ruby کا base64؛ سرکاری SDK پیکیج انسٹال کرنے کی ضرورت نہیں۔

Go کا عوامی ماڈیول نام `github.com/spf86/licentivo-launch-sdk` اور درآمدی پاتھ `github.com/spf86/licentivo-launch-sdk/pkg/launchclient` ہے، ایپ کو مقامی replace ضروری نہیں۔ Windows مقامی پیکیج amd64 GNU/MinGW استعمال کرتا ہے، Linux amd64 مقامی پیکیج بھی ہے۔ Ruby پلیٹ فارم پیکیج اور Rust/native Windows تقسیم میں curl شامل ہے؛ دوسرے پلیٹ فارم کے سورس بلڈ کو معمول کی C11، curl/OpenSSL ترقیاتی dependencies چاہئیں۔ پلیٹ فارم ٹول چین ہر پیکیج README میں دیکھیں۔

## لاگ ان اور محفوظ کارروائیاں

درج ذیل ٹکڑے پچھلے مرحلے میں کاپی کردہ کنکشن فنکشن استعمال کرتے ہیں۔ `email`, `password` آپ کے لاگ ان انٹرفیس سے آتے ہیں؛ پاس ورڈ سورس یا ترتیب میں نہ لکھیں۔ `export` کو پلان پالیسی میں واقعی موجود فیچر نام سے بدلنا ضروری ہے۔

### Go

```go
app, err := connectLaunch()
if err != nil { return err }
defer app.Close()
if _, err := app.Login(ctx, email, password); err != nil { return err }
return app.RunFeature("export", func() error {
    return exportReport()
})
```

`ctx` ایپ کے لائف سائیکل سیاق استعمال کرے؛ لاگ ان درخواست ختم ہوتے ہی ہارٹ بیٹ منسوخ نہ کریں۔ نیٹ ورک کام پس منظر ورکر تھریڈ میں رکھیں۔ بحالی کے لیے `Restore(ctx)`؛ اکاؤنٹ لاگ آؤٹ کے لیے `Logout(ctx)`؛ ڈیوائس ریلیز کے لیے `ReleaseDevice(ctx)` کال کریں۔

### Python

```python
with connect_launch() as app:
    app.login(email, password)
    result = app.run_feature("export", export_report)
```

`restore()` موجودہ محفوظ سیشن بحال کرتا ہے؛ سیشن نہ ہو تو لاگ ان انٹرفیس دکھائیں۔ `logout()` اکاؤنٹ صاف کرتا ہے؛ `release_device()` واضح طور پر ڈیوائس ریلیز کرتا ہے۔ مطابقتی نیٹ ورک کام ڈیسک ٹاپ ایونٹ لوپ کو بلاک نہ کرے۔

### C# / .NET

```csharp
await using var app = LaunchConnection.Open();
await app.Login(email, password);
await app.RunFeature("export", async () => {
    await ExportReport();
});
```

`await Restore()`, `await Logout()` اور `await ReleaseDevice()` استعمال کریں۔ ایپ کے زندہ رہنے تک SDK لائف سائیکل برقرار رکھیں، غیر مطابقتی انٹرفیس عمل استعمال کریں۔

### Java

```java
try (var app = LaunchConnection.open()) {
    app.login(email, passwordChars);
    app.runFeature("export", () -> exportReport());
}
```

پاس ورڈ کے لیے `char[]` استعمال کریں۔ سیشن نہ ہو تو `restore()`، `NO_SESSION` ناکامی واپس کرتا ہے، لاگ ان انٹرفیس دکھائیں؛ دوسری ناکامی اجازت نہیں سمجھی جا سکتی۔ `logout()` اور `releaseDevice()` الگ کارروائیاں ہیں۔ try-with-resources بند کرنے کا ذمہ دار ہے۔

### JavaScript / Node.js / TypeScript

```javascript
const app = connectLaunch();
try {
  await app.login(email, password);
  const result = await app.runFeature('export', () => exportReport());
} finally {
  await app.close();
}
```

سیشن نہ ہو تو `restore()`، `null` واپس کرتا ہے؛ معمول کی بحالی کے بعد ہی کاروباری کام چلائیں۔ `logout()` کی boolean قدر دور دراز لاگ آؤٹ کی تصدیق ظاہر کرتی ہے، ڈیوائس ریلیز ناکام ہو تو غلطی دکھائیں۔ کوڈ Node.js، Electron مرکزی عمل یا قابل اعتماد بیک اینڈ میں چلے؛ براؤزر اور Electron رینڈرر اجازت اسناد محفوظ نہیں کرتے۔

### Rust

```rust
let mut app = connect_launch()?;
app.login(&email, &password)?;
let result = app.run_feature("export", || {
    export_report()?;
    Ok(())
})?;
app.close();
```

کال بیک `Result<T, Failure>` واپس کرتا ہے۔ `restore()`, `logout()`, `release_device()` نتائج واپس کرتے ہیں، ناکامی سنبھالنا لازم ہے۔ `Drop` رن ٹائم بھی بند کرتا ہے۔ طے شدہ مقامی کور build.rs سے کمپائل اور لنک ہوتا ہے، سرکاری SDK خود لنک نہیں کرنا پڑتا۔

### Ruby

```ruby
app = connect_launch
begin
  app.login(email, password)
  result = app.run_feature('export') { export_report }
ensure
  app.close
end
```

`restore` سیشن بحال کرتا ہے، `logout` اکاؤنٹ سے نکلتا ہے، `release_device` ڈیوائس ریلیز کرتا ہے۔ محفوظ کارروائی میں کوڈ بلاک استعمال کریں؛ استثنا کامیابی میں نہیں بدلا جا سکتا۔

### C

```c
static int export_action(void *context) {
    return export_report(context); /* Return 1 only on success. */
}

launch_application *app = connect_launch();
if (!app) return 0;
int ok = launch_application_login(app, email, password);
if (ok) ok = launch_application_run_feature(app, "export", export_action, context);
/* Check launch_application_error(app) on failure; never log credentials. */
launch_application_close(app);
return ok;
```

`launch_application_restore` کی تین حالتیں ہیں: `1` بحال، `0` سیشن نہیں، `-1` ناکامی۔ صرف سیشن نہ ہونے پر معمول کا لاگ ان دکھائیں؛ انکار یا استثنا کو کامیابی نہ سمجھیں۔ `logout` اور `release_device` کی واپسی اقدار بھی جانچیں۔

CMake صرف Launch درآمد کرتا ہے:

```cmake
find_package(LicentivoLaunch CONFIG REQUIRED)
add_executable(myapp main.c)
licentivo_launch_link(myapp)
```

### C++

```cpp
auto app = connectLaunch();
app.Login(email.c_str(), password.c_str());
app.RunFeature("export", [&] { exportReport(); });
```

`Restore()`, `Logout()`, `ReleaseDevice()` C++ استثنائی اصولوں کے مطابق ہیں۔ RAII destructor بندش سنبھالتا ہے۔ CMake، `licentivo_launch_link(myapp CXX)` استعمال کرتا ہے؛ Launch SDK لنک اور تقسیم کے رن ٹائم کتب خانے خود سنبھالتا ہے۔

## لائف سائیکل، محفوظ اسٹوریج اور غلطیاں

کنکشن آبجیکٹ بنانا صرف ابتدائی ترتیب ہے۔ ایپ کو کامیاب لاگ ان یا بحالی اور ہر کاروباری کارروائی میں فیچر تحفظ کال بیک استعمال کرنا ہوگا۔ ادائیگی شدہ آرڈر، موجود سیشن یا قابل کلک بٹن SDK کی جانچ کا متبادل نہیں۔

طے شدہ سیشن صرف میموری میں رہتا ہے۔ لاگ ان یاد رکھنے کے لیے محفوظ اسٹوریج ضروری ہے: Go، Python، C# اور مقامی C/C++ Windows موجودہ صارف DPAPI دیتے ہیں؛ Java، Node، Rust اور Ruby کالر کی کلید والا AES-GCM اسٹوریج دیتے ہیں۔ کراس پلیٹ فارم ایپ سسٹم اسناد کے ذخیرے سے جڑے۔ کلید اور ciphertext ایک عام ڈائریکٹری میں نہ رکھیں۔

عام بندش صارف کا جان بوجھ کر یاد رکھا سیشن برقرار رکھتی اور رن ٹائم روکتی ہے۔ اکاؤنٹ لاگ آؤٹ پہلے سرکاری SDK متحدہ لاگ آؤٹ کال کرتا ہے، پھر Launch کا اپنا اکاؤنٹ ریکارڈ صاف کرتا ہے۔ ReleaseDevice اسی عمل کا مطابقتی راستہ ہے؛ دور دراز تنسیخ باقی ہو تو کامیاب ریلیز نہ بتائیں۔ سرکاری SDK کی کیش ڈائریکٹری یا لاگ آؤٹ بحالی لاگ صاف نہ کریں۔ Launch سیشن تحفظ کا مطلب نہیں کہ سرکاری SDK کی تمام ڈیوائس فائلیں خفیہ ہیں؛ کیش ڈائریکٹری کی اجازت محدود کریں۔

| حالت | ایپ کی کارروائی |
| --- | --- |
| اکاؤنٹ یا پاس ورڈ ناکام | عمومی لاگ ان ناکامی دکھائیں، اکاؤنٹ کے وجود کو ظاہر نہ کریں |
| EMAIL_VERIFICATION_REQUIRED | اسٹور ای میل توثیق مکمل کرنے کی رہنمائی دیں |
| ENTITLEMENT_PENDING | ہم آہنگی جاری دکھائیں، پیکیج کی محدود دوبارہ کوشش اور Retry-After کے مطابق انتظار کریں |
| ENTITLEMENT_NOT_PURCHASED | خریداری یا اکاؤنٹ بدلنے کی رہنمائی دیں |
| ENTITLEMENT_EXPIRED | تجدید کی رہنمائی دیں، پرانی اسناد سے انکار نظر انداز نہ کریں |
| ENTITLEMENT_SUSPENDED | محفوظ فیچرز روکیں، مرچنٹ سے رابطہ کریں |
| ڈیوائس تعداد پوری | ڈیوائس انتظام یا واضح ریلیز کی رہنمائی دیں |
| نیٹ ورک/HTTP 5xx | صرف SDK کی توثیق شدہ اور اب بھی مؤثر آف لائن اجازت استعمال ہو سکتی ہے |

واضح 401/403/404، اکاؤنٹ عدم مطابقت، منسوخی یا شرح کی حد آف لائن اجازت کی کامیابی نہیں بن سکتے۔ پہلی ایکٹیویشن اور آف لائن ممنوع پالیسیوں کو اب بھی نیٹ ورک چاہیے۔ سرور ڈومین/IP ناقابل رسائی ہو تو کنکشن مسئلہ دکھائیں، خاموشی سے دوسری سائٹ سے نہ جڑیں۔

## قبولیتی جانچ اور حوالہ جات

حقیقی لاگ ان، مالک اکاؤنٹ کی اجازت، محفوظ کارروائی، دوبارہ آغاز پر بحالی، درست آف لائن اور آف لائن اختتام، کیش میں ردوبدل، لاگ آؤٹ، اکاؤنٹ تبدیلی اور ڈیوائس ریلیز جانچیں۔ اس دستاویز میں AI ضروری نہیں۔ جانچ کے اوزار اور بیرونی قبولیتی حدود [acceptance.md](/ur/launch-documents/acceptance/) میں؛ مقامی پیکیج اور بلڈ ہدایات [integration-packages.md](/ur/launch-documents/integration-packages/) میں ہیں۔

ترتیب کی جانچ، کوڈ جنریشن اور مقامی کمپائل حقیقی ادائیگی، لائسنس اجراء یا بیرونی ایکٹیویشن کی کامیابی خود ثابت نہیں کرتے۔ بیرونی اسٹور اور ادائیگی sandbox کی ترتیب کے بعد الگ قبولیتی جانچ ضروری ہے۔
