তৈরি করা iOS SDK ব্যবহার করুন

Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি একটি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড প্রশ্ন এবং মিউটেশন কল করতে দেয়। আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন যখন আপনি স্কিম, প্রশ্ন এবং মিউটেশনগুলি আপনার Data Connect পরিষেবাতে স্থাপন করেন। তারপর, আপনি আপনার ক্লায়েন্ট যুক্তিতে এই SDK থেকে পদ্ধতিগুলিকে একীভূত করুন৷

যেমনটি আমরা অন্য কোথাও উল্লেখ করেছি, এটা মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয়। পরিবর্তে, যখন স্থাপন করা হয়, Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।

এই কারণেই Data Connect আপনাকে একটি বিকাশকারী পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-নিয়োজিত স্কিমা, প্রশ্ন এবং মিউটেশনের প্রোটোটাইপ করতে দেয়। আপনি প্রোটোটাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।

আপনি যখন আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড আপডেটগুলি স্থাপনের জন্য প্রস্তুত।

আপনার সুইফট SDK তৈরি করুন

বেশিরভাগ ফায়ারবেস প্রজেক্টের মতো, আপনার Firebase Data Connect ক্লায়েন্ট কোডের কাজ স্থানীয় প্রজেক্ট ডিরেক্টরিতে হয়। ডেটা কানেক্ট ভিএস কোড এক্সটেনশন এবং Firebase সিএলআই উভয়ই ক্লায়েন্ট কোড তৈরি ও পরিচালনার জন্য গুরুত্বপূর্ণ স্থানীয় টুল।

SDK জেনারেশনের অপশনগুলি dataconnect.yaml ফাইলের বেশ কয়েকটি এন্ট্রিতে চাবি করা হয় যখন আপনি আপনার প্রকল্প শুরু করেন।

SDK জেনারেশন শুরু করুন

আপনার connector.yaml এ, আপনার outputDir , package এবং (ওয়েব SDK-এর জন্য) packageJsonDir যোগ করুন।
connectorId: "movies"
generate:
  swiftSdk:
    outputDir: "../movies-generated"
    package: "Movies"

outputDir উত্পন্ন SDK কোথায় আউটপুট করা উচিত তা নির্দিষ্ট করে। যদি নির্দিষ্ট করা না থাকে, সংযোগকারী ফোল্ডারটি ডিফল্ট আউটপুট ডিরেক্টরি হিসাবে ব্যবহৃত হয়।

package প্যাকেজের নাম উল্লেখ করে যা তৈরি করা হবে। জেনারেটর প্যাকেজের নামের সাথে একটি ফোল্ডার তৈরি করবে, যার মধ্যে Package.swift এবং জেনারেটেড কোড থাকবে।

observablePublisher (ঐচ্ছিক) ক্যোয়ারী রেফ ব্যবহার করার জন্য পর্যবেক্ষণযোগ্য প্রকাশককে নির্দিষ্ট করে। সম্ভাব্য মানগুলি হল observableMacro (iOS 17+) এবং observableObject (প্রাক - iOS 17)। ডিফল্ট মান, যদি কোনোটি নির্দিষ্ট করা না থাকে, তাহলে observableMacro

প্রোটোটাইপ করার সময় SDK আপডেট করুন

আপনি যদি ডেটা কানেক্ট VS কোড এক্সটেনশন এবং এর Data Connect এমুলেটরের সাথে ইন্টারেক্টিভভাবে প্রোটোটাইপ করে থাকেন, SDK সোর্স ফাইলগুলি স্বয়ংক্রিয়ভাবে তৈরি এবং আপডেট হয় যখন আপনি .gql ফাইলগুলিকে সংজ্ঞায়িত করে স্কিমা, ক্যোয়ারী এবং মিউটেশনগুলি পরিবর্তন করেন। গরম (পুনরায়) লোডিং ওয়ার্কফ্লোতে এটি একটি দরকারী বৈশিষ্ট্য হতে পারে।

অন্যান্য পরিস্থিতিতে, আপনি যদি Firebase CLI থেকে Data Connect এমুলেটর ব্যবহার করেন, তাহলে আপনি .gql আপডেটের উপর একটি ঘড়ি সেট করতে পারেন এবং SDK উত্সগুলি স্বয়ংক্রিয়ভাবে আপডেট হতে পারে।

বিকল্পভাবে, যখনই .gql ফাইলগুলি পরিবর্তন করা হয় তখন আপনি SDK পুনরুদ্ধার করতে CLI ব্যবহার করতে পারেন:

firebase dataconnect:sdk:generate --watch

ইন্টিগ্রেশন এবং প্রোডাকশন রিলিজের জন্য SDK তৈরি করুন

কিছু পরিস্থিতিতে, যেমন CI পরীক্ষার জন্য জমা দেওয়ার জন্য প্রকল্পের উত্স প্রস্তুত করা, আপনি একটি ব্যাচ আপডেটের জন্য Firebase CLI-কে কল করতে পারেন।

এই ক্ষেত্রে, firebase dataconnect:sdk:generate ব্যবহার করুন।

ক্লায়েন্ট কোড সেট আপ করুন

ডেটা কানেক্ট এবং আপনার জেনারেট করা SDK ব্যবহার করার জন্য আপনার ক্লায়েন্ট কোড সেট আপ করতে, প্রথমে স্ট্যান্ডার্ড Firebase সেটআপ নির্দেশাবলী অনুসরণ করুন।

তারপরে, Xcode ব্যবহার করে আপনার অ্যাপ ওয়ার্কস্পেস খুলুন।

উপরের নেভিগেশন বারে, ফাইল > প্যাকেজ নির্ভরতা যোগ করুন > স্থানীয় যোগ করুন নির্বাচন করুন এবং তৈরি করা Package.swift সোর্স ফাইল ধারণকারী ফোল্ডারটি বেছে নিন।

Data Connect iOS SDK শুরু করুন

ডেটা কানেক্ট সেট আপ করার জন্য আপনি যে তথ্য ব্যবহার করেছেন তা ব্যবহার করে আপনার Data Connect ইনস্ট্যান্স শুরু করুন ( Firebase কনসোল ডেটা কানেক্ট ট্যাবে সমস্ত উপলব্ধ)।

একটি সংযোগকারী উদাহরণ প্রাপ্ত

আপনার সংযোগকারীর জন্য কোডটি Data Connect এমুলেটর দ্বারা তৈরি করা হবে। আপনার সংযোগকারীর নাম যদি movies হয় এবং প্যাকেজটি হয় movies , যেমন connector.yaml এ উল্লেখ করা হয়েছে, তাহলে কল করে সংযোগকারী বস্তুটি পুনরুদ্ধার করুন:

let connector = DataConnect.moviesConnector

চলমান প্রশ্ন এবং মিউটেশন

সংযোগকারী বস্তুর সাথে, আপনি GraphQL সোর্স কোডে সংজ্ঞায়িত ক্যোয়ারী এবং মিউটেশন চালাতে পারেন। ধরুন আপনার সংযোগকারীর এই অপারেশনগুলি সংজ্ঞায়িত আছে:

mutation createMovie($title: String!, $releaseYear: Int!, $genre: String!, $rating: Int!) {
  movie_insert(data: {
    title: $title
    releaseYear: $releaseYear
    genre: $genre
    rating: $rating
  })
}

query getMovieByKey($key: Movie_Key!) {
  movie(key: $key) { id title }
}

query listMoviesByGenre($genre: String!) {
  movies(where: {genre: {eq: $genre}}) {
    id
    title
  }
}

তারপরে আপনি নিম্নলিখিত হিসাবে একটি চলচ্চিত্র তৈরি করতে পারেন:

let mutationResult = try await connector.createMovieMutation.execute(
  title: "Empire Strikes Back",
  releaseYear: 1980,
  genre: "Sci-Fi",
  rating: 5)

print("Movie ID: \(mutationResult.data.movie_insert.id)")

একটি চলচ্চিত্র পুনরুদ্ধার করতে, আপনি একটি ক্যোয়ারী রেফারেন্স ব্যবহার করবেন৷ সমস্ত ক্যোয়ারী রেফ হল পর্যবেক্ষণযোগ্য প্রকাশক। কনফিগার করা প্রকাশকের উপর নির্ভর করে ( connector.yaml) , তারা হয় @Observable ম্যাক্রো (iOS 17+) সমর্থন করে অথবা ObservableObject প্রোটোকল প্রয়োগ করে। ডিফল্ট, যদি কোনোটি নির্দিষ্ট করা না থাকে, তাহলে @Observable ম্যাক্রো iOS 17+ এ সমর্থিত।

একটি SwiftUI ভিউতে, আপনি ক্যোয়ারী রেফের প্রকাশিত data ভেরিয়েবল ব্যবহার করে ক্যোয়ারী ফলাফল আবদ্ধ করতে পারেন এবং ডেটা আপডেট করার জন্য ক্যোয়ারীটির execute() পদ্ধতিতে কল করতে পারেন। data ভেরিয়েবল আপনার GQL ক্যোয়ারী সংজ্ঞাতে সংজ্ঞায়িত ডেটার আকারের সাথে মিলবে।

সমস্ত পুনরুদ্ধার করা ফলাফল Decodable প্রোটোকল মেনে চলে। আপনি যদি আপনার GQL আনয়নে অবজেক্টের প্রাথমিক কী অন্তর্ভুক্ত করেন, তাহলে অবজেক্টগুলিও Identifiable হয়, যা আপনাকে পুনরাবৃত্তিকারীতে ব্যবহার করতে দেয়।

struct ListMovieView: View {
    @StateObject private var queryRef = connector.listMoviesByGenreQuery.ref(genre: "Sci-Fi")
    var body: some View {
        VStack {
            Button {
                Task {
                    do {
                        try await refresh()
                    } catch {
                        print("Failed to refresh: \(error)")
                    }
                }
            } label: {
                Text("Refresh")
            }
                // use the query results in a view
            ForEach(queryRef.data?.movies ?? [], id: \.self.id) { movie in
                    Text(movie.title)
                }
            }
    }
    @MainActor
    func refresh() async throws {
        _ = try await queryRef.execute()
    }
}

প্রশ্নগুলিও এক-শট মৃত্যুদন্ড সমর্থন করে।

let resultData = try await DataConnect.moviesConnector.listMoviesByGenreQuery.execute(genre: "Sci-Fi")

প্রোটোটাইপ এবং আপনার iOS অ্যাপ্লিকেশন পরীক্ষা

একটি স্থানীয় এমুলেটর ব্যবহার করার জন্য উপকরণ ক্লায়েন্ট

আপনি Data Connect এমুলেটর ব্যবহার করতে পারেন, ডেটা কানেক্ট VS কোড এক্সটেনশন থেকে হোক বা CLI থেকে।

এমুলেটরের সাথে সংযোগ করার জন্য অ্যাপটিকে ইন্সট্রুমেন্ট করা উভয় পরিস্থিতিতেই একই।

let connector = DataConnect.moviesConnector
// Connect to the emulator on "127.0.0.1:9399"
connector.useEmulator()

// (alternatively) if you're running your emulator on non-default port:
connector.useEmulator(port: 9999)

// Make calls from your app

Data Connect SDK-এ ডেটার ধরন

Data Connect সার্ভার সাধারণ এবং কাস্টম গ্রাফকিউএল ডেটা প্রকারের প্রতিনিধিত্ব করে। এগুলিকে নিম্নরূপ SDK-তে উপস্থাপন করা হয়েছে।

ডেটা কানেক্ট টাইপ সুইফট
স্ট্রিং স্ট্রিং
int int
ভাসা ডাবল
বুলিয়ান বুল
UUID UUID
তারিখ FirebaseDataConnect.LocalDate
টাইমস্ট্যাম্প FirebaseCore.Timestamp
Int64 Int64
যে কোন FirebaseDataConnect.AnyValue