> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/self-hosted/sdks/ios-sdk.md).

# iOS SDK

यदि आप ऐसा iOS एप्लिकेशन विकसित कर रहे हैं जहाँ तेज़ अनुमान के लिए या सुविधाओं, क्षमताओं और उपयोग के मामलों (जैसे संवर्धित वास्तविकता) का नया समूह अनलॉक करने के लिए एज (iPad या iPhone) पर मॉडल चलाना आवश्यक है, तो Roboflow Mobile iOS SDK एक बेहतरीन विकल्प है।

कस्टम कंप्यूटर विज़न मॉडल एम्बेड किए हुए नेटिव मोबाइल एप्लिकेशन डेवलपर्स को अपने ऐप्स को देखने की क्षमता देने की अनुमति देते हैं।

## कार्य समर्थन

निम्नलिखित कार्य प्रकार iOS SDK परिनियोजन द्वारा समर्थित हैं:

| कार्य प्रकार        | iOS SDK परिनियोजन द्वारा समर्थित |
| ------------------- | -------------------------------- |
| ऑब्जेक्ट डिटेक्शन   | ✅                                |
| वर्गीकरण            |                                  |
| इंस्टेंस सेगमेंटेशन | ✅ (iOS 18 या उच्चतर)             |
| सिमैंटिक सेगमेंटेशन |                                  |

### CoreML निर्यात संगतता

निम्नलिखित मॉडल आर्किटेक्चर CoreML (`.mlpackage`) निर्यात को ऑन-डिवाइस परिनियोजन के लिए समर्थन देते हैं:

| मॉडल          | CoreML निर्यात |
| ------------- | -------------- |
| RF-DETR       | ✅              |
| YoloLite      | ✅              |
| वर्गीकरण मॉडल | ✅              |

## किसी मॉडल को iOS डिवाइस पर परिनियोजित करें

### समर्थित हार्डवेयर और सॉफ़्टवेयर

सभी iOS डिवाइस ऑन-डिवाइस अनुमान का समर्थन करते हैं, लेकिन iPhone 8 (A11 Bionic प्रोसेसर) से पुराने डिवाइस कम ऊर्जा-कुशल gpu इंजन का उपयोग करेंगे।

Roboflow के लिए न्यूनतम iOS संस्करण 15.4 आवश्यक है (इंस्टेंस सेगमेंटेशन मॉडलों के लिए 18.0)।

## प्रोटोटाइपिंग

आप इसके विरुद्ध विकसित कर सकते हैं [Roboflow Serverless Cloud API](/deployment/hi/legacy/legacy-serverless.md). यह ऑन-डिवाइस अनुमान जैसे ही प्रशिक्षित मॉडलों का उपयोग करता है।

## स्थापना

* स्थापित करें [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) | [समस्या-निवारण मार्गदर्शिका](https://guides.cocoapods.org/using/troubleshooting#installing-cocoapods)

"CocoaPods Ruby के साथ बनाया गया है और macOS पर उपलब्ध डिफ़ॉल्ट Ruby के साथ स्थापित किया जा सकेगा। आप Ruby संस्करण प्रबंधक का उपयोग कर सकते हैं, लेकिन जब तक आपको इसकी पूरी जानकारी न हो, हम macOS पर उपलब्ध मानक Ruby का उपयोग करने की अनुशंसा करते हैं। डिफ़ॉल्ट Ruby इंस्टॉलेशन का उपयोग करने पर आपको इसका उपयोग करना होगा `sudo` जेम स्थापित करते समय। (हालाँकि, यह केवल जेम स्थापना की अवधि तक की समस्या है।)" - [CocoaPods](https://guides.cocoapods.org/using/getting-started.html)

यदि आप इस प्रक्रिया के लिए RubyGems को एडमिन विशेषाधिकार नहीं देना चाहते हैं, तो "Sudo-less" स्थापना एक विकल्प है। हालाँकि, ध्यान दें कि `sudo` स्थापना अधिक सामान्य है।

निम्न दर्ज करके जाँचें कि CocoaPods सफलतापूर्वक स्थापित हो गया है `pod --version` अपने Terminal में।

### Roboflow CocoaPod स्थापित करना

पहले, चलाएँ `pod init` अपनी प्रोजेक्ट डायरेक्टरी में।

सुनिश्चित करें कि `Podfile` यह निर्दिष्ट करता है `platform :ios, '15.4'`

इसके बाद, जोड़ें `pod 'Roboflow'` अपने `Podfile`.

यदि आपके पास XCode Command Line Tools स्थापित नहीं हैं, तो चलाएँ `xcode-select --install` अपने Terminal में।

यह लौटाएगा: `xcode-select: error: command line tools are alreadyinstalled, use "Software Update" to install updates` यदि Command Line Tools आपके सिस्टम पर पहले से मौजूद हैं।

अंत में, चलाएँ `pod install` और जनरेट की गई `.xcworkspace` फ़ाइल को इसमें खोलें [XCode](https://developer.apple.com/xcode/).

![Podfile के सफलतापूर्वक स्थापित होने के बाद Terminal](/files/108223ee63f3b46981233a0c85e678da73799366)

![Podfile के सफलतापूर्वक स्थापित होने के बाद प्रोजेक्ट डायरेक्टरी](/files/2b11258baec3be055ed26f5371c6c40424ea1864)

* यदि यह त्रुटि लौटती है: "You may have encountered a bug in the Ruby interpreter or extension libraries," तो पहले चलाएँ `brew install cocoapods`, और फिर चलाएँ `pod install` और जनरेट की गई `.xcworkspace` XCode में फ़ाइल।
  * निम्न दर्ज करके जाँचें कि CocoaPods सफलतापूर्वक स्थापित हो गया है `pod --version` अपने Terminal में।

### Swift में Roboflow का उपयोग

इस पर जाएँ `.xcworkspace` XCode में फ़ाइल।

![](/files/ce7195ae565f3a48ae54e5aa3b9a426b35cb7dba)

इसके बाद, यह जोड़कर Roboflow इंपोर्ट करें `import Roboflow`. को इसमें `.xcworkspace` फ़ाइल।

फिर, इसके साथ Roboflow API का एक इंस्टेंस बनाएँ `let rf = Roboflow(apiKey: "API_KEY")`. के लिए `modelVersion`, बदलें `YOUR-MODEL-VERSION-#` को अपने मॉडल के संस्करण नंबर के पूर्णांक मान से।

#### अपने प्रोजेक्ट की जानकारी ढूँढना

**कम्प्लीशन हैंडलर का उपयोग:**

```swift
import Roboflow
...
//अपनी API कुंजी के साथ प्रारंभ करें
let rf = RoboflowMobile(apiKey: "API_KEY")
var model: RFModel?
...

//model आपके मॉडल के प्रोजेक्ट का नाम है
rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#) { [self] model, error, modelName, modelType in
    if error != nil {
        print(error?.localizedDescription as Any)
    } else {
        model?.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects
                            processingMode: .performance or .balanced or .quality, // इंस्टेंस सेग
                            maxNumberPoints: मास्क प्रोसेसिंग पॉइंट्स की अधिकतम संख्या) // इंस्टेंस सेग
        self.model = model
    }
    
}
...

//model?.detect एक UIImage लेता है और उस पर अनुमान चलाता है
let img = UIImage(named: "example.jpeg") // या CVPixelBuffer
model?.detect(image: img!) { predictions, error in
    if error != nil {
        print(error)
    } else {
        print(predictions)
    }
}
```

**असिंक्रोनस उपयोग:**

असिंक्रोनस रूप से उपयोग करने के लिए, आपको अपने Roboflow मॉडल को किसी असिंक्रोनस ब्लॉक के भीतर इनवोक करना होगा।

```swift
import Roboflow
...
//अपनी API कुंजी के साथ प्रारंभ करें
let rf = RoboflowMobile(apiKey: "API_KEY")
...

//model आपके मॉडल के प्रोजेक्ट का नाम है
let (model, loadingError, modelName, modelType) = await rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#)
model!.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects)
...

//model?.detect एक UIImage लेता है और उस पर अनुमान चलाता है
let img = UIImage(named: "example.jpeg")
let (predictions, predictionError) = await model!.detect(image: img!)
print(predictions)
```

**पूर्वानुमान प्रारूप:**

```
x:Float //ऑब्जेक्ट का केंद्र x
y:Float //ऑब्जेक्ट का केंद्र y
width:Float
height:Float
className:String
confidence:Float
color:UIColor
box:CGRect
points:[CGPoint] // केवल इंस्टेंस सेगमेंटेशन मॉडल
```

[CGRect](https://developer.apple.com/documentation/corefoundation/cgrect)

### नेटिव Swift उदाहरण

यह [roboflow-ios-starter](https://github.com/roboflow/roboflow-ios-starter) ऐप roboflow मॉडलों के साथ रीयलटाइम iOS ऐप बनाने के लिए एक बेहतरीन शुरुआती बिंदु है। इसमें ऑब्जेक्ट-डिटेक्शन और इंस्टेंस सेगमेंटेशन, दोनों मॉडलों के लिए कैमरा सेटअप, मॉडल लोडिंग और प्रोसेसिंग तथा आउटपुट ड्रॉइंग कोड शामिल है।

### React Native Expo ऐप उदाहरण

हम यहाँ React Native के साथ एक expo ऐप में इस SDK को एकीकृत करने का उदाहरण भी प्रदान करते हैं। अपना डाउनस्ट्रीम एप्लिकेशन बनाने पर विचार करते समय आपको यह उपयोगी लग सकता है।

सुनिश्चित करें कि आपके पास दोनों [Expo](https://docs.expo.dev/) और [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) स्थापित हैं।

* `expo-cli` निम्नलिखित Node.js संस्करणों का समर्थन करता है: `>=12.13.0 <15.0.0` (मेंटेनेंस LTS) और `>=16.0.0 <17.0.0` (सक्रिय LTS)
* Node.js के लिए yarn पैकेज स्थापित होना चाहिए (`npm install -g yarn`)

{% embed url="<https://github.com/roboflow-ai/RoboflowExpoExample>" %}

### उदाहरण iOS एप्लिकेशन - CashCounter

डाउनलोड करें [CashCounter](https://apps.apple.com/app/roboflow-cash-counter/id1633812788), हमारा उदाहरण iOS ऐप जो अमेरिकी सिक्कों और नोटों की गिनती करता है, यह दर्शाने के उदाहरण के रूप में कि आप किसी कंप्यूटर विज़न मॉडल को iPhone पर कैसे परिनियोजित कर सकते हैं। आपको बाउंडिंग बॉक्स, FPS, ऑब्जेक्ट गिनती, इमेज अपलोड और अन्य चीज़ों के विज़ुअलाइज़ेशन के उदाहरण दिखाई देंगे।
