पिछले जुलाई में, मैंने एक पारंपरिक सेल्सफोर्स क्लाइंट के बिना सेल्सफोर्स प्लेटफॉर्म का उपयोग कैसे किया जा सकता है, इस पर केंद्रित एक श्रृंखला लिखना शुरू कर दिया। श्रृंखला के अन्य लेखों के लिंक यहां दिए गए हैं:
श्रृंखला का एक चित्रमय प्रतिनिधित्व नीचे दिखाया गया है:
ऊपर दिए गए उदाहरण से पता चलता है कि सेल्सफोर्स इकोसिस्टम द्वारा प्रदान किए गए क्लाइंट्स का वास्तव में उपयोग किए बिना विभिन्न क्लाइंट फ्रेमवर्क सेल्सफोर्स डेटा तक कैसे पहुंच सकते हैं।
नवंबर 2021 में, मैंने सेल्सफोर्स मोबाइल एसडीके को प्रदर्शित करने के लिए एक नई श्रृंखला शुरू की, जो स्टैंडअलोन मोबाइल ऐप के भीतर सेल्सफोर्स प्लेटफॉर्म की शक्ति का उपयोग करती है।
इस नई श्रृंखला का चित्रमय प्रतिनिधित्व नीचे दिखाया गया है:
" रिएक्टिव नेटिव का उपयोग करके सेल्सफोर्स मोबाइल एसडीके की खोज " इस मोबाइल एसडीके श्रृंखला का पहला लेख था। फिर मैंने एंड्रॉइड स्टूडियो का लाभ उठाने के लिए " एंड्रॉइड स्टूडियो का उपयोग कर सेल्सफोर्स मोबाइल एसडीके की खोज " लेख के लिए गियर स्विच किया। इस लेख में, मैं उसी एप्लिकेशन को बनाने के लिए Xcode का उपयोग करने पर ध्यान केंद्रित करूंगा।
सेल्सफोर्स मोबाइल एसडीके सॉफ्टवेयर इंजीनियरों के लिए कई लाभ प्रदान करता है:
यदि आपका एप्लिकेशन परिदृश्य व्यवसाय संचालन के प्रमुख पहलुओं के लिए सेल्सफोर्स का उपयोग करता है, तो सेल्सफोर्स मोबाइल एसडीके का लाभ उठाने पर विचार करें। ऐसा करने से, आप Salesforce द्वारा अनुरक्षित डेटा को प्रमुख घटक स्थानों में एकीकृत कर सकते हैं, जिससे आप मज़बूत व्यावसायिक निर्णय ले सकते हैं।
यदि आपके ग्राहक आधार को iOS उपकरणों के लिए समर्थन की आवश्यकता है और आप ऐप विकास के लिए Xcode का उपयोग करना चाहते हैं, तो आपको Salesforce कार्यक्षमता के साथ शीघ्रता से आरंभ करने के लिए forceios
CLI में मूल्य मिलेगा।
Xcode को नियोजित करने वाली टीमों के लिए प्रमुख विशेषताओं में शामिल हैं:
यह स्पष्ट हो सकता है लेकिन Xcode का उपयोग करने के लिए आपके पास एक Apple कंप्यूटर होना चाहिए। इस लेख के लिए, मैं मार्च 2020 से अपने 16 ”मैकबुक प्रो का उपयोग करूंगा।
अब जब हम इसमें गोता लगाने के लिए तैयार हैं, तो आइए संक्षेप में हमारे उपयोग के मामले की समीक्षा करें।
विशेष जरूरतों के साथ पैदा हुए बेटे (फिन्नी) ने अपने दैनिक जीवन में हमारे द्वारा उपयोग किए जाने वाले उत्पादों की समझ और प्रशंसा हासिल करने की व्यक्तिगत इच्छा का परिचय दिया। फ़िनी के जन्म के वर्षों पहले, मेरी पत्नी (निकोल) और मैं एक स्वस्थ जीवन शैली जीते थे। हालाँकि, जैसे ही निकोल ने हमारे दैनिक आहार को बनाने वाले खाद्य पदार्थों में गहराई से गोता लगाना शुरू किया, हमें एक बहुत जरूरी वेक-अप कॉल मिला।
आज के समय में, हमारे आहार में कुछ प्रसंस्कृत खाद्य पदार्थ शामिल हैं, कोई ग्लूटेन नहीं, कम चीनी, और बहुत कम डेयरी। जितना संभव हो, हमारा प्रोटीन घास-पात वाले स्रोतों से उत्पन्न होता है, और हम हमेशा जैविक विकल्पों का पक्ष लेते हैं। मुझे GMO पर शुरू न करें।
इस श्रृंखला के लिए, हमारे फिनीज़ फूड्स एप्लिकेशन भोजन की एक सरल सूची प्रदान करता है जो हमें स्वीकार्य और फ़िनी द्वारा पसंद किया जाता है। अभी के लिए, हम प्रत्येक भोजन के लिए दो सरल विशेषताओं को शामिल करेंगे:
समय के साथ, मैं अन्य विशेषताओं (जैसे सारांश, सामग्री, निर्देश, और यहां तक कि एक तस्वीर) को पेश करने की योजना बना रहा हूं, लेकिन चलने से पहले चलो।
अपने मैकबुक प्रो पर 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 * ******************************************************************************
इससे पहले कि मैं एक्सकोड में एक नया एप्लिकेशन बनाना शुरू कर सकूं, मुझे सेल्सफोर्स में भोजन ऑब्जेक्ट स्थापित करने की आवश्यकता है।
मेरे पास पहले से एक डेवलपर संगठन था जिसका मैं उपयोग कर सकता था। (आप यहां एक नया बना सकते हैं।) तो, मैंने बस उस संगठन के लिए अपने ईमेल पते और पासवर्ड का उपयोग करके लॉग इन किया। इसके बाद, मैंने ऐप्स पर नेविगेट किया | सेल्सफोर्स में ऐप मैनेजर और सेटअप परिप्रेक्ष्य।
मैंने भोजन नामक एक नया लाइटनिंग ऐप बनाया:
शेष सेटअप स्क्रीन पर, मैंने सभी डिफ़ॉल्ट सेटिंग्स का चयन किया और सभी सेल्सफोर्स उपयोगकर्ता प्रोफाइल तक पहुंच प्रदान की।
इसके बाद, मैंने वस्तुओं और क्षेत्रों का दौरा किया | सेल्सफोर्स सेटिंग्स में ऑब्जेक्ट मैनेजर मेनू विकल्प। एक बार जब मैंने नव-निर्मित भोजन वस्तु को ढूंढ लिया, तो मैंने वस्तु को संपादित करने के लिए ड्रॉप-डाउन घटक का उपयोग किया।
मैंने विवरण सबमेनू से फ़ील्ड और संबंध विकल्प पर स्विच किया। मुझे जल्दी से एहसास हुआ कि मुझे अपने भोजन वस्तु के लिए नाम संपत्ति बनाने की आवश्यकता नहीं है क्योंकि सेल्सफोर्स ने पहले से ही मेरे लिए इसका ख्याल रखा है। मुझे बस रेटिंग फ़ील्ड जोड़ने की जरूरत है।
न्यू बटन का उपयोग करते हुए, मैंने संख्या फ़ील्ड प्रकार का चयन किया और नीचे बताए अनुसार चरण दो को पॉप्युलेट किया:
मैंने डिफ़ॉल्ट मानों का उपयोग किया और अपना नया फ़ील्ड सहेजा। अब, मैं अपने आईओएस एप्लिकेशन में नाम और रेटिंग दोनों क्षेत्रों का उपयोग कर सकता हूं।
सेल्सफोर्स क्लाइंट का उपयोग करके, मैंने एक्सकोड में एप्लिकेशन विकसित करने के लिए कुछ स्रोत डेटा पॉप्युलेट किया। नीचे सबमिट किए गए मानों का सारांश दिया गया है:
नमूना डेटा के आधार पर, फ़िनी हमेशा "चिकन और चावल" पर "पिज्जा" पसंद करती है।
स्रोत ऑब्जेक्ट और डेटा कॉन्फ़िगर किए जाने के साथ, मैंने पहली बार finnys-foods-ios
प्रोजेक्ट को खोलने के लिए अपने Xcode एप्लिकेशन का उपयोग किया।
डिफ़ॉल्ट रूप से, forceios
CLI एक कार्यशील एप्लिकेशन बनाता है जो पहली बार चलने पर उपयोगकर्ता खाते से जुड़े Salesforce संगठन के लिए खाता और संपर्क जानकारी प्रदर्शित करता है। चीजों को आसान बनाने के लिए, मैंने आगे बढ़ने और परियोजना से निम्नलिखित फाइलों को हटाने का फैसला किया:
चूंकि मैं भविष्य के लेख में ऑफ़लाइन कार्यक्षमता को कवर करने की योजना बना रहा हूं, इसलिए मैंने 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 आइकन जोड़ना कितना आसान होगा। जैसा कि आपको याद होगा, रिएक्ट नेटिव के साथ यह कार्य बहुत आसान था और एंड्रॉइड स्टूडियो में इतना आसान नहीं था।
मैं लगभग 15 मिनट में काम करने के लिए निम्नलिखित URL पर दिए गए चरणों का उपयोग करने में सक्षम था। मैं पूरी तरह से उम्मीद करता हूं कि एक्सकोड अनुभव वाले लोग इन चरणों को समय के एक अंश में पूरा करेंगे:
स्विफ्टयूआई में आसान फ़ॉन्ट विस्मयकारी
इन चरणों के परिणामस्वरूप, निम्नलिखित सहायक फ़ाइलें अब मेरे प्रोजेक्ट का हिस्सा हैं:
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 एप्लिकेशन उपयोग के लिए तैयार है।
Xcode का उपयोग करते हुए, मैंने उत्पाद मेनू विकल्प का उपयोग किया और रन विकल्प का चयन किया।
पहली बार उपयोग स्वचालित रूप से सेल्सफोर्स लॉगिन स्क्रीन पर रीडायरेक्ट करेगा, जहां मैंने अपने डेवलपर संगठन तक पहुंचने के लिए उसी ईमेल पते और पासवर्ड का उपयोग किया था। साइन इन करने के बाद, प्रत्येक आइटम के लिए फाइव-स्टार रेटिंग मान सहित, फ़िनीज़ फ़ूड्स एप्लिकेशन दिखाई दिया।
कुछ ही मिनटों में, हम Xcode और Salesforce मोबाइल SDK का उपयोग करके एक iOS एप्लिकेशन बनाने में सक्षम हो गए।
इस लेख में, मैंने एक कस्टम मोबाइल एप्लिकेशन पेश किया है जो मूल रूप से Apple स्टोर से प्रदर्शित होता है और स्विफ्ट में लिखे गए स्रोत कोड का उपयोग करता है। साथ ही, हमें इस बात की बुनियादी समझ प्राप्त हुई कि iOS-आधारित एप्लिकेशन कैसे संरचित किए जाते हैं।
2021 से, मैं निम्नलिखित मिशन वक्तव्य के अनुसार जीने की कोशिश कर रहा हूं, जो मुझे लगता है कि किसी भी आईटी पेशेवर पर लागू हो सकता है:
“अपना समय उन सुविधाओं/कार्यक्षमताओं को प्रदान करने पर केंद्रित करें जो आपकी बौद्धिक संपदा के मूल्य को बढ़ाती हैं। अन्य सभी चीजों के लिए ढांचे, उत्पादों और सेवाओं का लाभ उठाएं।"
- जे वेस्टर
सेल्सफोर्स मोबाइल एसडीके निश्चित रूप से मेरे व्यक्तिगत मिशन स्टेटमेंट का पालन करता है, जो किसी भी फीचर टीम को लाभान्वित करेगा जिसके लिए आईओएस उपकरणों पर चल रहे कस्टम मोबाइल एप्लिकेशन के हिस्से के रूप में सेल्सफोर्स कार्यक्षमता की आवश्यकता होती है। विकास के इस क्षेत्र में सॉफ्टवेयर इंजीनियरों को निश्चित रूप से सेल्सफोर्स मोबाइल एसडीके को परियोजना निर्भरता के रूप में जोड़ने पर विचार करना चाहिए।
यदि आप इस लेख के लिए पूर्ण स्रोत कोड देखना चाहते हैं, तो GitLab पर मेरे प्रोजेक्ट पर जाएँ:
https://gitlab.com/johnjvester/finnys-foods-ios
आपका दिन वाकई बहुत अच्छा हो!