# फ्लटर एसडीके बेसिक इंटीग्रेशन गाइड

इस सेक्शन में यह जानकारी है कि आप अपने एप्लिकेशन में पुशवूश फ्लटर एसडीके को कैसे इंटीग्रेट कर सकते हैं।

## आवश्यक शर्तें

अपने ऐप में पुशवूश फ्लटर एसडीके को इंटीग्रेट करने के लिए, आपको निम्नलिखित की आवश्यकता होगी:

<Aside type="note" title="आवश्यकताएँ">
 - एक [पुशवूश अकाउंट](https://sso.pushwoosh.com/login)।
 - आपके अकाउंट में एक [पुशवूश प्रोजेक्ट](/hi/product/first-steps/start-with-your-project/create-your-project) सेटअप।
 - **आईओएस इंटीग्रेशन के लिए:**
    - पुश नोटिफिकेशन भेजने के लिए कॉन्फ़िगर किया गया एक आईओएस प्लेटफॉर्म। हम सबसे सरल तरीके के रूप में [टोकन-आधारित प्रमाणीकरण कॉन्फ़िगरेशन](/hi/developer/first-steps/connect-messaging-services/ios-configuration/ios-token-based-configuration/) का उपयोग करने की सलाह देते हैं।
    - सिम्युलेटर पर पुश भेजने के लिए गेटवे को `सैंडबॉक्स` पर सेट करें।
 - **एंड्रॉइड इंटीग्रेशन के लिए:**
    - एक [कॉन्फ़िगर किया गया एंड्रॉइड प्लेटफॉर्म](/hi/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration)
    - आपके फायरबेस प्रोजेक्ट से `google-services.json` फ़ाइल और `पैकेज का नाम`।
    - आपकी एंड्रॉइड एप्लिकेशन से जुड़ा एक फायरबेस प्रोजेक्ट। यदि आवश्यक हो तो [फायरबेस सेटअप गाइड](https://firebase.google.com/docs/android/setup#manually_add_firebase) का पालन करें।
 - आपके एप्लिकेशन के लिए पुशवूश कंट्रोल पैनल से आपका `पुशवूश एप्लिकेशन कोड` और [पुशवूश डिवाइस एपीआई टोकन](/hi/developer/api-reference/api-access-token/#device-api-token)।
</Aside>

## इंटीग्रेशन के चरण

### 1. पुशवूश फ्लटर एसडीके डिपेंडेंसी जोड़ें

अपनी `pubspec.yaml` फ़ाइल में `pushwoosh_flutter` पैकेज जोड़ें:

```yaml title="pubspec.yaml"
dependencies:
  flutter:
    sdk: flutter
  # Use the latest version from https://pub.dev/packages/pushwoosh_flutter
  pushwoosh_flutter: ^[LATEST_VERSION]
```
pub.dev पर [नवीनतम संस्करण](https://pub.dev/packages/pushwoosh_flutter) देखें।

फिर, डिपेंडेंसी इंस्टॉल करने के लिए अपने प्रोजेक्ट की रूट डायरेक्टरी में निम्नलिखित कमांड चलाएँ:

```bash
flutter pub get
```

दोबारा जांचें कि पैकेज सही ढंग से इंस्टॉल हो गया है:
```bash
flutter pub deps | grep pushwoosh_flutter

# Example output:
# ❯ flutter pub deps | grep pushwoosh_flutter
# └── pushwoosh_flutter 2.3.11
```

### 2. फ्लटर एसडीके इनिशियलाइज़ेशन

आपकी `main.dart` फ़ाइल के रूट कंपोनेंट में:
- `pushwoosh_flutter` पैकेज को इम्पोर्ट करें।
- पुशवूश एसडीके को इनिशियलाइज़ करें।
- पुश नोटिफिकेशन के लिए रजिस्टर करने के लिए अपनी इनिशियलाइज़ेशन लॉजिक में `registerForPushNotifications()` को कॉल करें।

```dart title="main.dart"
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';

void main() async {
  runApp(const MyApp());
  Pushwoosh.initialize({
    "app_id": "__YOUR_APP_ID__"
  });
  Pushwoosh.getInstance.registerForPushNotifications();
}
```

जहाँ:
- `__YOUR_APP_ID__` पुशवूश कंट्रोल पैनल से एप्लिकेशन कोड है।


### 3. आईओएस नेटिव सेटअप

#### 3.1 क्षमताएं

अपने प्रोजेक्ट में पुश नोटिफिकेशन सक्षम करने के लिए, आपको कुछ क्षमताएं जोड़ने की आवश्यकता है।

साइनिंग और क्षमताएं सेक्शन में, निम्नलिखित क्षमताएं जोड़ें:
- `पुश नोटिफिकेशन`
- `बैकग्राउंड मोड्स`। इस क्षमता को जोड़ने के बाद, `रिमोट नोटिफिकेशन` के लिए बॉक्स को चेक करें।

यदि आप टाइम सेंसिटिव नोटिफिकेशन (आईओएस 15+) का उपयोग करना चाहते हैं, तो `टाइम सेंसिटिव नोटिफिकेशन` क्षमता भी जोड़ें।

#### 3.2 Info.plist

अपने `Runner/Info.plist` में `__PUSHWOOSH_DEVICE_API_TOKEN__` कुंजी को [पुशवूश डिवाइस एपीआई टोकन](/hi/developer/api-reference/api-access-token/#device-api-token) पर सेट करें:
```swift title="info.plist"
<key>Pushwoosh_API_TOKEN</key>
<string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>
```

#### 3.3 संदेश डिलीवरी ट्रैकिंग

आपको अपने प्रोजेक्ट में एक नोटिफिकेशन सर्विस एक्सटेंशन टारगेट जोड़ना होगा। यह आईओएस पर सटीक डिलीवरी ट्रैकिंग और रिच मीडिया जैसी सुविधाओं के लिए आवश्यक है।

एक्सटेंशन टारगेट और उसके भीतर आवश्यक पुशवूश कोड जोड़ने के लिए [नेटिव गाइड के चरणों](/hi/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#4-message-delivery-tracking) का पालन करें।

यह सुनिश्चित करने के लिए कि नोटिफिकेशन सर्विस एक्सटेंशन आपके फ्लटर प्रोजेक्ट में ठीक से इंटीग्रेटेड है, आपको निम्नलिखित पॉडफाइल कॉन्फ़िगरेशन का उपयोग करने की आवश्यकता है:

```ruby title="Podfile"
target 'NotificationServiceExtension' do
  use_frameworks!
  use_modular_headers!

  pod 'PushwooshXCFramework'

  inherit! :search_paths
end
```

#### 3.4 आईओएस फ्लटर प्रोजेक्ट के लिए डिपेंडेंसी इंस्टॉल करना

आईओएस फ्लटर प्रोजेक्ट के लिए डिपेंडेंसी इंस्टॉल करने के लिए, निम्नलिखित कमांड चलाएँ:

```bash
flutter run
```

या टर्मिनल में `ios` फ़ोल्डर पर जाएँ और चलाएँ:

```bash
pod install --repo-update
```

### 4. एंड्रॉइड नेटिव सेटअप

#### 4.1 डिपेंडेंसी इंस्टॉल करें

सुनिश्चित करें कि आवश्यक डिपेंडेंसी और प्लगइन्स आपके ग्रेडल स्क्रिप्ट में जोड़े गए हैं:

अपने प्रोजेक्ट-स्तरीय `build.gradle` डिपेंडेंसी में गूगल सर्विसेज ग्रेडल प्लगइन जोड़ें:

```groovy title="android/build.gradle"
buildscript {
  dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
  }
}
```

अपने ऐप-स्तरीय `build.gradle` फ़ाइल में प्लगइन लागू करें:

```groovy title="app/build.gradle"
apply plugin: 'com.google.gms.google-services'
```

#### 4.2 फायरबेस कॉन्फ़िगरेशन फ़ाइल जोड़ें

`google-services.json` फ़ाइल को अपने प्रोजेक्ट डायरेक्टरी में `android/app` फ़ोल्डर में रखें।

#### 4.3 पुशवूश मेटाडेटा जोड़ें

अपने `main/AndroidManifest.xml` में `<application>` टैग के अंदर [पुशवूश डिवाइस एपीआई टोकन](/hi/developer/api-reference/api-access-token/#device-api-token) जोड़ें:

```xml title="AndroidManifest.xml"
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />
```

> **महत्वपूर्ण:** सुनिश्चित करें कि आप अपने पुशवूश कंट्रोल पैनल में सही ऐप को टोकन एक्सेस दें। [और जानें](/hi/developer/api-reference/api-access-token/#edit-token)

### 5. प्रोजेक्ट चलाएँ

1. प्रोजेक्ट को बिल्ड और रन करें।
2. पुशवूश कंट्रोल पैनल पर जाएं और [एक पुश नोटिफिकेशन भेजें](/hi/product/messaging-channels/push-notifications/send-push-notifications/one-time-push)।
3. आपको ऐप में नोटिफिकेशन दिखना चाहिए।

## विस्तारित इंटीग्रेशन

इस स्तर पर, आपने पहले ही एसडीके को इंटीग्रेट कर लिया है और आप पुश नोटिफिकेशन भेज और प्राप्त कर सकते हैं। अब, आइए मुख्य कार्यक्षमता का पता लगाएं

### पुश नोटिफिकेशन इवेंट लिसनर्स

पुशवूश एसडीके में दो इवेंट लिसनर हैं, जो पुश नोटिफिकेशन को संभालने के लिए डिज़ाइन किए गए हैं:

- `onPushReceived` इवेंट तब ट्रिगर होता है, जब एक पुश नोटिफिकेशन प्राप्त होता है
- `onPushAccepted` इवेंट तब ट्रिगर होता है, जब कोई उपयोगकर्ता नोटिफिकेशन खोलता है

आपको एप्लिकेशन शुरू होने पर एसडीके के इनिशियलाइज़ेशन के ठीक बाद इन इवेंट लिसनर्स को सेटअप करना चाहिए:

```dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';

class PushwooshNotificationHandler {
  void setupPushListeners(Pushwoosh pushwoosh) {

    pushwoosh.onPushReceived.listen((event) {
      print("Push received: ${event.pushwooshMessage.payload}");
    });

    pushwoosh.onPushAccepted.listen((event) {
      print("Push accepted: ${event.pushwooshMessage.payload}");
    });
    
  }
}
```

### उपयोगकर्ता कॉन्फ़िगरेशन

व्यक्तिगत उपयोगकर्ता के व्यवहार और वरीयताओं पर ध्यान केंद्रित करके, आप व्यक्तिगत सामग्री प्रदान कर सकते हैं, जिससे उपयोगकर्ता की संतुष्टि और वफादारी में वृद्धि होती है

```dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';

class Registration {
  void afterUserLogin(User user) {
  
    // उपयोगकर्ता आईडी सेट करें
    Pushwoosh().setUserId(user.getId());
    
    // उपयोगकर्ता ईमेल सेट करें
    Pushwoosh().setEmail(user.getEmail());

    // एसएमएस नंबर रजिस्टर करें
    // एसएमएस और व्हाट्सएप नंबर E.164 प्रारूप (जैसे, "+1234567890") में होने चाहिए और मान्य होने चाहिए
    Pushwoosh().registerSmsNumber(user.getSmsNumber());

    // व्हाट्सएप नंबर रजिस्टर करें
    Pushwoosh().registerWhatsappNumber(user.getWhatsappNumber());
    
    // पुशवूश के लिए टैग के रूप में अतिरिक्त उपयोगकर्ता जानकारी सेट करना
    Pushwoosh().setTags({
      "age": user.getAge(),
      "name": user.getName(),
      "last_login": user.getLastLoginDate()
    });
  }
}
```

### टैग

टैग उपयोगकर्ताओं या उपकरणों को सौंपे गए की-वैल्यू पेयर होते हैं, जो वरीयताओं या व्यवहार जैसे गुणों के आधार पर सेगमेंटेशन की अनुमति देते हैं, जिससे लक्षित संदेश भेजना संभव होता है।

```dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';

class UpdateUser {
  void afterUserUpdateProfile(User user) {

    // पसंदीदा श्रेणियों की सूची सेट करें
    Pushwoosh().setTags({
      "favorite_categories": user.getFavoriteCategoriesList()
    });
    
    // भुगतान जानकारी सेट करें
    Pushwoosh().setTags({
      "is_subscribed": user.isSubscribed(),
      "payment_status": user.getPaymentStatus(),
      "billing_address": user.getBillingAddress()
    });
  }
}
```

### इवेंट्स

इवेंट्स ऐप के भीतर विशिष्ट उपयोगकर्ता क्रियाएं या घटनाएं होती हैं जिन्हें व्यवहार का विश्लेषण करने और संबंधित संदेशों या क्रियाओं को ट्रिगर करने के लिए ट्रैक किया जा सकता है

```dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';

class Registration {

  // लॉगिन इवेंट ट्रैक करें
  void afterUserLogin(User user) {
    Pushwoosh().postEvent("login", {
      "name": user.getName(),
      "last_login": user.getLastLoginDate()
    });
  }

  void afterUserPurchase(Product product) {

  // खरीद इवेंट ट्रैक करें
  Pushwoosh().postEvent("purchase", {
    "product_id": product.getId(),
    "product_name": product.getName(),
    "price": product.getPrice(),
    "quantity": product.getQuantity()
  });
 }
}
```

## प्रो-गार्ड का उपयोग करना

<Aside type="note">
ध्यान दें कि `flutter build apk` कमांड डिफ़ॉल्ट रूप से आपके कोड को ऑब्फस्केट करता है।
</Aside>

इस प्रकार, आपको यह अपवाद मिल सकता है:

```java
java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension
```

इस मामले में दो समाधान हैं:

1. अपने कोड को बिना ऑब्फसकेशन के कंपाइल करने के लिए `flutter build apk --no-shrink` कमांड का उपयोग करें।
2. या आप मैन्युअल रूप से प्रो-गार्ड को सक्षम कर सकते हैं और आवश्यक नियम जोड़ सकते हैं।

अपने प्रोजेक्ट के लिए प्रो-गार्ड को सक्षम करने के लिए, अपनी `build.gradle` फ़ाइल में निम्नलिखित स्ट्रिंग्स जोड़ें:

```java title="build.gradle"
buildTypes {
        release {
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            signingConfig signingConfigs.debug
        }
    }
```

फिर, `android/app/proguard-rules.pro` में निम्नलिखित नियम जोड़ें

```java title="proguard-rules.pro"
#Pushwoosh Flutter
-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }
-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }
```


## समस्या निवारण

यदि आपको इंटीग्रेशन प्रक्रिया के दौरान कोई समस्या आती है, तो कृपया [समर्थन और समुदाय](/hi/developer/pushwoosh-sdk/support-and-community) सेक्शन देखें।