paint-brush
Xcode का उपयोग करके Salesforce मोबाइल SDK की खोज करनाद्वारा@johnjvester
237 रीडिंग

Xcode का उपयोग करके Salesforce मोबाइल SDK की खोज करना

द्वारा John Vester2022/04/04
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

श्रृंखला के तीसरे लेख में, एक मूल आईओएस एप्लिकेशन बनाएं जो सेल्सफोर्स प्लेटफॉर्म और सेल्सफोर्स मोबाइल एसडीके का लाभ उठाए।

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Xcode का उपयोग करके Salesforce मोबाइल SDK की खोज करना
John Vester HackerNoon profile picture

पिछले जुलाई में, मैंने एक पारंपरिक सेल्सफोर्स क्लाइंट के बिना सेल्सफोर्स प्लेटफॉर्म का उपयोग कैसे किया जा सकता है, इस पर केंद्रित एक श्रृंखला लिखना शुरू कर दिया। श्रृंखला के अन्य लेखों के लिंक यहां दिए गए हैं:



श्रृंखला का एक चित्रमय प्रतिनिधित्व नीचे दिखाया गया है:


ऊपर दिए गए उदाहरण से पता चलता है कि सेल्सफोर्स इकोसिस्टम द्वारा प्रदान किए गए क्लाइंट्स का वास्तव में उपयोग किए बिना विभिन्न क्लाइंट फ्रेमवर्क सेल्सफोर्स डेटा तक कैसे पहुंच सकते हैं।


नवंबर 2021 में, मैंने सेल्सफोर्स मोबाइल एसडीके को प्रदर्शित करने के लिए एक नई श्रृंखला शुरू की, जो स्टैंडअलोन मोबाइल ऐप के भीतर सेल्सफोर्स प्लेटफॉर्म की शक्ति का उपयोग करती है।


इस नई श्रृंखला का चित्रमय प्रतिनिधित्व नीचे दिखाया गया है:


" रिएक्टिव नेटिव का उपयोग करके सेल्सफोर्स मोबाइल एसडीके की खोज " इस मोबाइल एसडीके श्रृंखला का पहला लेख था। फिर मैंने एंड्रॉइड स्टूडियो का लाभ उठाने के लिए " एंड्रॉइड स्टूडियो का उपयोग कर सेल्सफोर्स मोबाइल एसडीके की खोज " लेख के लिए गियर स्विच किया। इस लेख में, मैं उसी एप्लिकेशन को बनाने के लिए Xcode का उपयोग करने पर ध्यान केंद्रित करूंगा।

सेल्सफोर्स मोबाइल एसडीके के लाभ

सेल्सफोर्स मोबाइल एसडीके सॉफ्टवेयर इंजीनियरों के लिए कई लाभ प्रदान करता है:


  • कस्टम मोबाइल डिवाइस एप्लिकेशन को Salesforce सुविधाओं और कार्यक्षमता का उपयोग करने देता है
  • सेल्सफोर्स कार्यक्षमता तक पूर्ण पहुंच (पहिया को फिर से शुरू करने की कोई आवश्यकता नहीं है)
  • एप्लिकेशन को मूल डिवाइस के एप्लिकेशन स्टोर का उपयोग करके वितरित किया जा सकता है
  • Salesforce से पुश सूचनाओं को संसाधित करना
  • Salesforce डेटा के साथ ऑफ़लाइन मोड में कार्य करने की क्षमता


यदि आपका एप्लिकेशन परिदृश्य व्यवसाय संचालन के प्रमुख पहलुओं के लिए सेल्सफोर्स का उपयोग करता है, तो सेल्सफोर्स मोबाइल एसडीके का लाभ उठाने पर विचार करें। ऐसा करने से, आप Salesforce द्वारा अनुरक्षित डेटा को प्रमुख घटक स्थानों में एकीकृत कर सकते हैं, जिससे आप मज़बूत व्यावसायिक निर्णय ले सकते हैं।

Xcode का उपयोग करने के लाभ

यदि आपके ग्राहक आधार को iOS उपकरणों के लिए समर्थन की आवश्यकता है और आप ऐप विकास के लिए Xcode का उपयोग करना चाहते हैं, तो आपको Salesforce कार्यक्षमता के साथ शीघ्रता से आरंभ करने के लिए forceios CLI में मूल्य मिलेगा।


Xcode को नियोजित करने वाली टीमों के लिए प्रमुख विशेषताओं में शामिल हैं:


  • आधार प्रोग्रामिंग भाषा के रूप में स्विफ्ट या ऑब्जेक्टिव-सी के उपयोग की अनुमति देता है
  • IOS उपकरणों पर सुविधाओं और कार्यक्षमता के लिए 100% मूल समर्थन प्रदान करता है
  • अनुभवी आईओएस डेवलपर्स को सेल्सफोर्स मोबाइल एसडीके कार्यक्षमता का त्वरित लाभ उठाने की अनुमति देता है
  • त्रुटि प्रबंधन में सुधार, क्योंकि स्विफ्ट और ऑब्जेक्टिव-सी दोनों एक मजबूत टाइपिंग और त्रुटि प्रबंधन डिजाइन बनाए रखते हैं
  • बिल्ड समस्याओं को आसानी से पहचानें और ठीक करें


यह स्पष्ट हो सकता है लेकिन Xcode का उपयोग करने के लिए आपके पास एक Apple कंप्यूटर होना चाहिए। इस लेख के लिए, मैं मार्च 2020 से अपने 16 ”मैकबुक प्रो का उपयोग करूंगा।


अब जब हम इसमें गोता लगाने के लिए तैयार हैं, तो आइए संक्षेप में हमारे उपयोग के मामले की समीक्षा करें।

फ़िनी के फूड्स: एक उदाहरण केस का उपयोग करें

विशेष जरूरतों के साथ पैदा हुए बेटे (फिन्नी) ने अपने दैनिक जीवन में हमारे द्वारा उपयोग किए जाने वाले उत्पादों की समझ और प्रशंसा हासिल करने की व्यक्तिगत इच्छा का परिचय दिया। फ़िनी के जन्म के वर्षों पहले, मेरी पत्नी (निकोल) और मैं एक स्वस्थ जीवन शैली जीते थे। हालाँकि, जैसे ही निकोल ने हमारे दैनिक आहार को बनाने वाले खाद्य पदार्थों में गहराई से गोता लगाना शुरू किया, हमें एक बहुत जरूरी वेक-अप कॉल मिला।


आज के समय में, हमारे आहार में कुछ प्रसंस्कृत खाद्य पदार्थ शामिल हैं, कोई ग्लूटेन नहीं, कम चीनी, और बहुत कम डेयरी। जितना संभव हो, हमारा प्रोटीन घास-पात वाले स्रोतों से उत्पन्न होता है, और हम हमेशा जैविक विकल्पों का पक्ष लेते हैं। मुझे GMO पर शुरू न करें।


इस श्रृंखला के लिए, हमारे फिनीज़ फूड्स एप्लिकेशन भोजन की एक सरल सूची प्रदान करता है जो हमें स्वीकार्य और फ़िनी द्वारा पसंद किया जाता है। अभी के लिए, हम प्रत्येक भोजन के लिए दो सरल विशेषताओं को शामिल करेंगे:


  • भोजन का नाम
  • रेटिंग (1 से 5, जहां 5 की रेटिंग फ़िनी के लिए एक परम पसंदीदा है)


समय के साथ, मैं अन्य विशेषताओं (जैसे सारांश, सामग्री, निर्देश, और यहां तक कि एक तस्वीर) को पेश करने की योजना बना रहा हूं, लेकिन चलने से पहले चलो।

Xcode के साथ शुरुआत करना

अपने मैकबुक प्रो पर git और npm स्थापित करने के अलावा, मैंने सुनिश्चित किया कि मेरा एक्सकोड संस्करण अद्यतित था। इसके बाद, मैंने यह सुनिश्चित करने के लिए निम्न URL का दौरा किया कि सब कुछ अपेक्षित रूप से सेट और कॉन्फ़िगर किया गया था:


अपना आईओएस विकास पर्यावरण सेट करें


इन चरणों में यह सुनिश्चित करना शामिल है कि Xcode, CocoaPods, node.js, npm, और forceios CLI सभी स्थापित हैं।


इसके बाद, मैंने निम्नलिखित विकल्पों के साथ टर्मिनल सत्र से forceios निष्पादित किया:


 forceios create Enter your application type (native_swift or native, leave empty for native_swift): native_swift Enter your application name: FinnysFoodsIOS Enter your package name: com.gitlab.johnjvester.finnysfoods.ios Enter your organization name (Acme, Inc.): JVC Enter output directory for your app (leave empty for the current directory): Once completed, I followed the steps provided by the forceios CLI: ****************************************************************************** * * Next steps: * * Your application project is ready in FinnysFoodsIOS. * To use your new application in XCode, do the following: * - open FinnysFoodsIOS/FinnysFoodsIOS.xcworkspace in XCode * - build and run * Before you ship, make sure to plug your OAuth Client ID and Callback URI, * and OAuth Scopes into FinnysFoodsIOS/FinnysFoodsIOS/bootconfig.plist * ******************************************************************************


सेल्सफोर्स में भोजन वस्तु बनाना

इससे पहले कि मैं एक्सकोड में एक नया एप्लिकेशन बनाना शुरू कर सकूं, मुझे सेल्सफोर्स में भोजन ऑब्जेक्ट स्थापित करने की आवश्यकता है।


मेरे पास पहले से एक डेवलपर संगठन था जिसका मैं उपयोग कर सकता था। (आप यहां एक नया बना सकते हैं।) तो, मैंने बस उस संगठन के लिए अपने ईमेल पते और पासवर्ड का उपयोग करके लॉग इन किया। इसके बाद, मैंने ऐप्स पर नेविगेट किया | सेल्सफोर्स में ऐप मैनेजर और सेटअप परिप्रेक्ष्य।


मैंने भोजन नामक एक नया लाइटनिंग ऐप बनाया:




शेष सेटअप स्क्रीन पर, मैंने सभी डिफ़ॉल्ट सेटिंग्स का चयन किया और सभी सेल्सफोर्स उपयोगकर्ता प्रोफाइल तक पहुंच प्रदान की।


इसके बाद, मैंने वस्तुओं और क्षेत्रों का दौरा किया | सेल्सफोर्स सेटिंग्स में ऑब्जेक्ट मैनेजर मेनू विकल्प। एक बार जब मैंने नव-निर्मित भोजन वस्तु को ढूंढ लिया, तो मैंने वस्तु को संपादित करने के लिए ड्रॉप-डाउन घटक का उपयोग किया।


मैंने विवरण सबमेनू से फ़ील्ड और संबंध विकल्प पर स्विच किया। मुझे जल्दी से एहसास हुआ कि मुझे अपने भोजन वस्तु के लिए नाम संपत्ति बनाने की आवश्यकता नहीं है क्योंकि सेल्सफोर्स ने पहले से ही मेरे लिए इसका ख्याल रखा है। मुझे बस रेटिंग फ़ील्ड जोड़ने की जरूरत है।


न्यू बटन का उपयोग करते हुए, मैंने संख्या फ़ील्ड प्रकार का चयन किया और नीचे बताए अनुसार चरण दो को पॉप्युलेट किया:




मैंने डिफ़ॉल्ट मानों का उपयोग किया और अपना नया फ़ील्ड सहेजा। अब, मैं अपने आईओएस एप्लिकेशन में नाम और रेटिंग दोनों क्षेत्रों का उपयोग कर सकता हूं।




सेल्सफोर्स क्लाइंट का उपयोग करके, मैंने एक्सकोड में एप्लिकेशन विकसित करने के लिए कुछ स्रोत डेटा पॉप्युलेट किया। नीचे सबमिट किए गए मानों का सारांश दिया गया है:




नमूना डेटा के आधार पर, फ़िनी हमेशा "चिकन और चावल" पर "पिज्जा" पसंद करती है।

Xcode में भोजन की कार्यक्षमता जोड़ना

स्रोत ऑब्जेक्ट और डेटा कॉन्फ़िगर किए जाने के साथ, मैंने पहली बार finnys-foods-ios प्रोजेक्ट को खोलने के लिए अपने Xcode एप्लिकेशन का उपयोग किया।


डिफ़ॉल्ट रूप से, forceios CLI एक कार्यशील एप्लिकेशन बनाता है जो पहली बार चलने पर उपयोगकर्ता खाते से जुड़े Salesforce संगठन के लिए खाता और संपर्क जानकारी प्रदर्शित करता है। चीजों को आसान बनाने के लिए, मैंने आगे बढ़ने और परियोजना से निम्नलिखित फाइलों को हटाने का फैसला किया:


  • AccountsListModel.swift
  • AccountsListView.swift
  • ContactDetailModel.swift
  • ContactDetailsView.swift
  • ContactsForAccountListView.swift
  • ContactsForAccountModel.swift


चूंकि मैं भविष्य के लेख में ऑफ़लाइन कार्यक्षमता को कवर करने की योजना बना रहा हूं, इसलिए मैंने userstore.json में कॉन्फ़िगरेशन डेटा को इसमें अपडेट किया है:


 { "soups": [ ] }


नीचे दिखाए गए अनुसार usersyncs.json फ़ाइल को भी शुद्ध किया गया था:


 { "syncs": [ ] }


इसके बाद, मैंने Salesforce में Meal__c ऑब्जेक्ट के लिए एक मूल सूची दृश्य बनाया, जिसे MealsListView.swift कहा जाता है।


 import Foundation import SwiftUI import Combine import SalesforceSDKCore struct MealsListView: View { var body: some View { Text("Finny's Foods (iOS)").bold() } } struct MealsList_Previews: PreviewProvider { static var previews: some View { MealsListView() } }


एप्लिकेशन शुरू होने पर भोजन सूची दृश्य का उपयोग करने के लिए, मैंने SceneDelegate.swift फ़ाइल में setupRootViewController() विधि को अपडेट किया जैसा कि नीचे दिखाया गया है:


 func setupRootViewController() { // Setup store based on config userstore.json MobileSyncSDKManager.shared.setupUserStoreFromDefaultConfig() // Setup syncs based on config usersyncs.json MobileSyncSDKManager.shared.setupUserSyncsFromDefaultConfig() self.window?.rootViewController = UIHostingController( rootView: MealsListView() ) }


इस बिंदु पर, हमारे पास एक कार्यात्मक आईओएस एप्लिकेशन है जो केवल बोल्ड टेक्स्ट का उपयोग करके "फिनीज़ फूड्स (आईओएस)" दिखाएगा।

Xcode में Font Awesome का उपयोग करना

बाकी एप्लिकेशन बनाने से पहले, मैं यह देखना चाहता था कि Xcode में बनाए गए स्विफ्ट एप्लिकेशन में Font Awesome आइकन जोड़ना कितना आसान होगा। जैसा कि आपको याद होगा, रिएक्ट नेटिव के साथ यह कार्य बहुत आसान था और एंड्रॉइड स्टूडियो में इतना आसान नहीं था।


मैं लगभग 15 मिनट में काम करने के लिए निम्नलिखित URL पर दिए गए चरणों का उपयोग करने में सक्षम था। मैं पूरी तरह से उम्मीद करता हूं कि एक्सकोड अनुभव वाले लोग इन चरणों को समय के एक अंश में पूरा करेंगे:


स्विफ्टयूआई में आसान फ़ॉन्ट विस्मयकारी


इन चरणों के परिणामस्वरूप, निम्नलिखित सहायक फ़ाइलें अब मेरे प्रोजेक्ट का हिस्सा हैं:


  • fa-ब्रांड-400.ttf
  • एफए-नियमित-400.ttf
  • एफए-सॉलिड-900.ttf
  • आइकॉन.जेसन

भोजन सूची मॉडल बनाना

Xcode एप्लिकेशन को Meal__c ऑब्जेक्ट को समझने की आवश्यकता है जो Finny's Foods एप्लिकेशन को चला रहा है। मैंने एक MealsListModel.swift फ़ाइल बनाई है जिसमें निम्नलिखित जानकारी है:


 import Combine import SmartStore import MobileSync struct Meal: Hashable, Identifiable, Decodable { let id: UUID = UUID() let Id: String let Name: String let Rating__c: Int } struct MealResponse: Decodable { var totalSize: Int var done: Bool var records: [Meal] } class MealsListModel: ObservableObject { @Published var meals: [Meal] = [] private var mealsCancellable: AnyCancellable? func fetchMeals(){ let request = RestClient.shared.request(forQuery: "SELECT Id, Name, Rating__c FROM Meal__c ORDER BY Name ASC", apiVersion: nil) mealsCancellable = RestClient.shared.publisher(for: request) .receive(on: RunLoop.main) .tryMap({ (response) -> Data in response.asData() }) .decode(type: MealResponse.self, decoder: JSONDecoder()) .map({ (record) -> [Meal] in record.records }) .catch( { error in Just([]) }) .assign(to: \.meals, on:self) } }


यह फ़ाइल एक Meal ऑब्जेक्ट का परिचय देती है जिसमें Salesforce में संग्रहीत प्रत्येक Meal__c ऑब्जेक्ट के लिए मेटा-डेटा होता है। एक MealResponse ऑब्जेक्ट भी है, जो Meal__c डेटा मांगते समय Salesforce द्वारा प्रदान किए गए पेलोड का प्रतिनिधित्व करता है।

परिभाषित उन दो प्रमुख संरचनाओं के साथ, fetchMeals() विधि Salesforce को एक RESTful API कॉल करती है, फिर किसी भी प्रतिक्रिया डेटा को भोजन वस्तुओं की सूची में मैप करती है। पहले बनाई गई MealsListView.swift फ़ाइल फिर इस डेटा को संसाधित करती है।

भोजन सूची दृश्य को अद्यतन करना

भोजन सूची मॉडल तैयार होने के साथ, भोजन सूची दृश्य को अब सेल्सफोर्स के साथ एकीकृत करने और आईओएस डिवाइस पर डेटा प्रस्तुत करने के लिए विस्तारित किया जा सकता है। पहली चीज़ जो मुझे करनी थी, वह MealsListView.swift फ़ाइल में भोजन सूची मॉडल के लिए एक चर स्थापित करना था:


 struct MealsListView: View { @ObservedObject var viewModel = MealsListModel()


इसके बाद, मैंने नीचे दिखाए गए अनुसार MealsListView.swift फ़ाइल में बॉडी वेरिएबल को अपडेट किया:


 var body: some View { Text("Finny's Foods (iOS)").bold() List(viewModel.meals) { dataItem in HStack(spacing: 10) { VStack(alignment: .leading, spacing: 3) { HStack { Text(dataItem.Name) } } } } .onAppear{ self.viewModel.fetchMeals() }


इस बिंदु पर, iOS एप्लिकेशन एक नई लाइन पर प्रत्येक भोजन का नाम दिखाता है। fetchMeals() विधि कॉल Salesforce से डेटा पुनर्प्राप्त करती है, प्रत्येक Meal__c आइटम को dataItem के रूप में संसाधित करती है।


हालाँकि, मैं वास्तव में रिएक्ट नेटिव प्रोजेक्ट में प्रयुक्त स्टार-रेटिंग सिस्टम को जोड़ना चाहता था। ऐसा करने के लिए, मैंने नीचे दिखाए गए अनुसार आंतरिक-सबसे HStack ऑब्जेक्ट को अपडेट किया:


 HStack { Text(dataItem.Name) Text(" ") switch dataItem.Rating__c { case 5: FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) case 4: FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15) case 3: FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) case 2: FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) default: FAText(iconName: "star", size: 15, style: .solid) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) FAText(iconName: "star", size: 15) } }


इन परिवर्तनों के साथ, iOS एप्लिकेशन उपयोग के लिए तैयार है।

Finny's Foods in Action

Xcode का उपयोग करते हुए, मैंने उत्पाद मेनू विकल्प का उपयोग किया और रन विकल्प का चयन किया।

पहली बार उपयोग स्वचालित रूप से सेल्सफोर्स लॉगिन स्क्रीन पर रीडायरेक्ट करेगा, जहां मैंने अपने डेवलपर संगठन तक पहुंचने के लिए उसी ईमेल पते और पासवर्ड का उपयोग किया था। साइन इन करने के बाद, प्रत्येक आइटम के लिए फाइव-स्टार रेटिंग मान सहित, फ़िनीज़ फ़ूड्स एप्लिकेशन दिखाई दिया।


कुछ ही मिनटों में, हम Xcode और Salesforce मोबाइल SDK का उपयोग करके एक iOS एप्लिकेशन बनाने में सक्षम हो गए।

निष्कर्ष

इस लेख में, मैंने एक कस्टम मोबाइल एप्लिकेशन पेश किया है जो मूल रूप से Apple स्टोर से प्रदर्शित होता है और स्विफ्ट में लिखे गए स्रोत कोड का उपयोग करता है। साथ ही, हमें इस बात की बुनियादी समझ प्राप्त हुई कि iOS-आधारित एप्लिकेशन कैसे संरचित किए जाते हैं।


2021 से, मैं निम्नलिखित मिशन वक्तव्य के अनुसार जीने की कोशिश कर रहा हूं, जो मुझे लगता है कि किसी भी आईटी पेशेवर पर लागू हो सकता है:


“अपना समय उन सुविधाओं/कार्यक्षमताओं को प्रदान करने पर केंद्रित करें जो आपकी बौद्धिक संपदा के मूल्य को बढ़ाती हैं। अन्य सभी चीजों के लिए ढांचे, उत्पादों और सेवाओं का लाभ उठाएं।"


- जे वेस्टर


सेल्सफोर्स मोबाइल एसडीके निश्चित रूप से मेरे व्यक्तिगत मिशन स्टेटमेंट का पालन करता है, जो किसी भी फीचर टीम को लाभान्वित करेगा जिसके लिए आईओएस उपकरणों पर चल रहे कस्टम मोबाइल एप्लिकेशन के हिस्से के रूप में सेल्सफोर्स कार्यक्षमता की आवश्यकता होती है। विकास के इस क्षेत्र में सॉफ्टवेयर इंजीनियरों को निश्चित रूप से सेल्सफोर्स मोबाइल एसडीके को परियोजना निर्भरता के रूप में जोड़ने पर विचार करना चाहिए।


यदि आप इस लेख के लिए पूर्ण स्रोत कोड देखना चाहते हैं, तो GitLab पर मेरे प्रोजेक्ट पर जाएँ:


https://gitlab.com/johnjvester/finnys-foods-ios


आपका दिन वाकई बहुत अच्छा हो!