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

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

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

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

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

ক্লায়েন্ট ডেভেলপমেন্ট ওয়ার্কফ্লো কী?

আপনি যদি Get Start অনুসরণ করেন, তাহলে আপনাকে Data Connect এর সামগ্রিক উন্নয়ন প্রবাহের সাথে পরিচয় করিয়ে দেওয়া হবে। এই নির্দেশিকায়, আপনি আপনার স্কিমা থেকে Swift SDK তৈরি করা এবং ক্লায়েন্ট কোয়েরি এবং মিউটেশন নিয়ে কাজ করার বিষয়ে আরও বিস্তারিত তথ্য পাবেন।

সংক্ষেপে বলতে গেলে, আপনার ক্লায়েন্ট অ্যাপগুলিতে জেনারেটেড সুইফট SDK ব্যবহার করতে, আপনাকে এই পূর্বশর্ত পদক্ষেপগুলি অনুসরণ করতে হবে:

  1. আপনার iOS অ্যাপে Firebase যোগ করুন।
  2. জেনারেটেড SDK ব্যবহার করতে, এটিকে Xcode-এ একটি নির্ভরতা হিসেবে কনফিগার করুন।

    Xcode এর উপরের নেভিগেশন বারে, File > Add Package Dependencies > Add Local নির্বাচন করুন এবং জেনারেট করা Package.swift ধারণকারী ফোল্ডারটি নির্বাচন করুন।

তারপর:

  1. আপনার অ্যাপ স্কিমা তৈরি করুন।
  2. SDK জেনারেশন সেট আপ করুন:

  3. আপনার ক্লায়েন্ট কোডটি শুরু করুন এবং লাইব্রেরিগুলি আমদানি করুন

  4. কল টু কোয়েরি এবং মিউটেশন বাস্তবায়ন করুন

  5. Data Connect এমুলেটর সেট আপ করুন এবং ব্যবহার করুন এবং পুনরাবৃত্তি করুন।

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

আপনার অ্যাপগুলিতে Data Connect জেনারেটেড SDK সেট আপ করতে Firebase CLI ব্যবহার করুন। init কমান্ডটি বর্তমান ফোল্ডারে সমস্ত অ্যাপ সনাক্ত করবে এবং স্বয়ংক্রিয়ভাবে জেনারেটেড SDK ইনস্টল করবে।

firebase init dataconnect:sdk

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

যদি আপনার ডেটা কানেক্ট ভিএস কোড এক্সটেনশন ইনস্টল করা থাকে, তাহলে এটি সর্বদা জেনারেট করা SDK গুলিকে আপ টু ডেট রাখবে।

আপনি যদি ডেটা কানেক্ট ভিএস কোড এক্সটেনশন ব্যবহার না করেন, তাহলে জেনারেট করা SDK গুলিকে আপ টু ডেট রাখতে আপনি Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate --watch

বিল্ড পাইপলাইনে SDK তৈরি করুন

CI/CD বিল্ড প্রক্রিয়ায় ডেটা কানেক্ট SDK তৈরি করতে আপনি Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate

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)")

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

SwiftUI ভিউতে, আপনি query ref এর প্রকাশিত 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")

গণনা ক্ষেত্রের পরিবর্তনগুলি পরিচালনা করুন

একটি অ্যাপের স্কিমায় গণনা থাকতে পারে, যা আপনার GraphQL কোয়েরি দ্বারা অ্যাক্সেস করা যেতে পারে।

একটি অ্যাপের ডিজাইন পরিবর্তনের সাথে সাথে, আপনি নতুন enum সমর্থিত মান যোগ করতে পারেন। উদাহরণস্বরূপ, কল্পনা করুন যে আপনার অ্যাপ্লিকেশনের জীবনচক্রের পরে আপনি AspectRatio enum-এ একটি FULLSCREEN মান যোগ করার সিদ্ধান্ত নিয়েছেন।

Data Connect ওয়ার্কফ্লোতে, আপনি আপনার প্রশ্ন এবং SDK আপডেট করার জন্য স্থানীয় ডেভেলপমেন্ট টুলিং ব্যবহার করতে পারেন।

তবে, আপনার ক্লায়েন্টদের একটি আপডেটেড সংস্করণ প্রকাশ করার আগে, পুরানো মোতায়েন করা ক্লায়েন্টগুলি ভেঙে যেতে পারে।

স্থিতিস্থাপক বাস্তবায়নের উদাহরণ

জেনারেটেড SDK অজানা মানগুলি পরিচালনা করতে বাধ্য করে কারণ জেনারেটেড এনামগুলিতে একটি _UNKNOWN মান থাকে এবং সুইফট সম্পূর্ণ সুইচ স্টেটমেন্ট প্রয়োগ করে।

do {
    let result = try await DataConnect.moviesConnector.listMovies.execute()
    if let data = result.data {
        for movie in data.movies {
            switch movie.aspectratio {
                case .ACADEMY: print("academy")
                case .WIDESCREEN: print("widescreen")
                case .ANAMORPHIC: print("anamorphic")
                case ._UNKNOWN(let unknownAspect): print(unknownAspect)
            }
        }
    }
} catch {
    // handle error
}

আপনার 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-তে নিম্নরূপে উপস্থাপন করা হয়েছে।

ডেটা সংযোগের ধরণ সুইফট
স্ট্রিং স্ট্রিং
ইন্ট ইন্ট
ভাসা দ্বিগুণ
বুলিয়ান বুল
ইউইউআইডি ইউইউআইডি
তারিখ ফায়ারবেসডেটাকানেক্ট.লোকালডেট
টাইমস্ট্যাম্প ফায়ারবেসকোর.টাইমস্ট্যাম্প
Int64 সম্পর্কে Int64 সম্পর্কে
যেকোনো ফায়ারবেসডেটাকানেক্ট.এনিভ্যালু