iOS SDK
Respondo সহায়তা চ্যাটের জন্য Swift ও SwiftUI-তে লেখা নেটিভ ক্লায়েন্ট, কোনো তৃতীয় পক্ষের ডিপেনডেন্সি ছাড়াই।
প্রয়োজনীয়তা#
- iOS 15.0+ (iOS 16+-এ শিটের ডিটেন্ট আরও সূক্ষ্ম, তার নিচে সিস্টেমের বিকল্প চলে)।
- Swift 5.9+।
- কোনো তৃতীয় পক্ষের ডিপেনডেন্সি নেই — শুধু Foundation, Swift Concurrency, SwiftUI ও UIKit।
আপনি নির্ভর করবেন RespondoSDK প্রোডাক্টের উপর, যা ক্রস-প্ল্যাটফর্ম RespondoCore পুনরায় এক্সপোর্ট করে।
ইনস্টলেশন#
Swift Package Manager দিয়ে প্যাকেজটি যোগ করুন। Xcode-এ: File → Add Package Dependencies… খুলে দিন https://github.com/respondo-app/sdk-ios, অথবা নিজের Package.swift-এ ঘোষণা করুন, তারপর RespondoSDK প্রোডাক্টের উপর নির্ভরতা দিন।
dependencies: [
.package(url: "https://github.com/respondo-app/sdk-ios", from: "0.1.0")
],
targets: [
.target(
name: "MyApp",
dependencies: [
.product(name: "RespondoSDK", package: "sdk-ios")
]
)
]তারপর কোডে এটি ইমপোর্ট করুন:
import RespondoSDKইনিশিয়ালাইজেশন#
অ্যাপ চালুর সময় একবার ইনিশিয়ালাইজ করুন, তারপর যেকোনো জায়গা থেকে Respondo.open() কল করুন। লাইফসাইকেল মেথডের নাম initialize (শব্দটি init ভাষার সংরক্ষিত শব্দ)।
import SwiftUI
import RespondoSDK
@main
struct MyApp: App {
init() {
Respondo.initialize(
RespondoConfig(
agentId: "<agent-uuid>",
channelId: "<channel-uuid>"
// baseUrl nil -> https://api.respondo.ai
)
)
}
var body: some Scene {
WindowGroup {
Button("Support") { Respondo.open() }
}
}
}Respondo ফ্যাসাডটি থ্রেড-নিরাপদ। initialize-এর ঠিক পরেই করা কলগুলো সারিতে জমা হয় এবং অ্যাসিঙ্ক ইনিশিয়ালাইজেশন শেষ হলেই প্রয়োগ হয়।
ব্যবহারকারী শনাক্তকরণ#
ডিফল্টভাবে প্রতিটি ভিজিটর বেনামি। প্রথমবার চালু হওয়ার সময় SDK একটি স্থির visitor_id তৈরি করে keychain-এ রেখে দেয়, ফলে ফিরে আসা ব্যবহারকারী নিজের কথোপকথন আবার খুঁজে পান। কোনো API কী বসানোর দরকার নেই — প্রতিটি কথোপকথন সুরক্ষিত থাকে সেই কথোপকথনের নিজস্ব সেশন টোকেন দিয়ে, যেটি backend তৈরি করে এবং প্রতিটি বার্তায় এগিয়ে নেয়; তাই বেনামি ভিজিটরকে কখনও নতুন করে অথেনটিকেট করতে হয় না।
ব্যবহারকারী সাইন ইন করার পরেই identify কল করুন। এতে তাঁর আসল পরিচয় যুক্ত হয়, ফলে তাঁর ইতিহাস ডিভাইস বদল ও পুনরায় ইনস্টলের পরেও সঙ্গে থাকে, আর আপনার ইনবক্সে কথোপকথনের পাশে বেনামি ভিজিটরের বদলে তাঁর নাম ও ইমেল দেখা যায়।
userHash হলো এমন একটি স্বাক্ষর, যা আপনার backend এজেন্টের identity_secret থেকে হিসাব করে — HMAC-SHA256(secret, userId) (userId না থাকলে ইমেল), লোয়ারকেস hex হিসেবে এনকোড করা। এই secret প্রমাণ করে যে পরিচয়টি আসল, তাই এটি কেবল আপনার backend-এ থাকতে হবে এবং কখনও অ্যাপের ভিতরে পাঠানো যাবে না। পূর্ণ সূত্র ও সার্ভার-সাইড উদাহরণের জন্য পরিচয় যাচাই পাতাটি দেখুন।
// userHash আসে আপনার backend থেকে (userId-এর উপর HMAC-SHA256) —
// কখনও অ্যাপের ভিতরে এটি হিসাব করবেন না।
Respondo.identify(
RespondoIdentity(
userId: session.userId,
email: session.email,
name: session.fullName,
userHash: session.respondoUserHash
)
)
// লগআউটের সময়: সেশন বাতিল করুন এবং নতুন বেনামি ভিজিটর শুরু করুন।
Respondo.reset()হ্যাশ না থাকলে বা ভুল হলে কিছুই ভেঙে পড়ে না: backend নীরবে ভিজিটরকে বেনামি রেখে দেয়, চ্যাট চলতে থাকে, শুধু বৈধ হ্যাশ না দেওয়া পর্যন্ত ডিভাইসের মধ্যেকার সংযোগটি হারিয়ে যায়। যাচাই কেবল তখনই চলে, যখন এজেন্টের জন্য identity_secret সেট করা থাকে — ডেভেলপমেন্টের সময় সেটি খালি রাখুন, তাহলে userId / ইমেল যেমন আছে তেমনই গ্রহণ করা হবে।
অবজার্ভেবল ও ডেলিগেট#
অবস্থা পড়তে পারেন সিঙ্ক্রোনাস গেটার হিসেবে, রিঅ্যাক্টিভ AsyncStream হিসেবে, কিংবা RespondoDelegate দিয়ে। স্ট্রিম ও ডেলিগেট কলব্যাক মেইন অ্যাক্টরে আসে।
// না-পড়া বার্তার সংখ্যার রিঅ্যাক্টিভ স্ট্রিম।
Task {
for await count in Respondo.unreadCountStream {
updateBadge(count)
}
}
// বেজ ও ডিপ-লিংকের বিকল্প ব্যবস্থার জন্য ডেলিগেট।
final class SupportCoordinator: RespondoDelegate {
init() { Respondo.delegate = self }
func respondoUnreadChanged(_ count: Int) {
UIApplication.shared.applicationIconBadgeNumber = count
}
}স্ক্রিন ট্র্যাকিং#
প্রতিটি নেভিগেশনে বর্তমান স্ক্রিনটি জানান, যাতে প্রোঅ্যাকটিভ টিজার ও পেজ-স্তরের টার্গেটিং সেটির সঙ্গে মেলাতে পারে (static func setCurrentScreen(_ name: String?))। মুছতে nil পাঠান; প্রতিবার বদলালে নতুন স্ক্রিনের জন্য প্রোঅ্যাকটিভ টিজার আবার মূল্যায়ন করা হয়।
Respondo.setCurrentScreen("pricing")পরবর্তী ধাপ#
পুশ নোটিফিকেশন ও পরিচয় যাচাই যুক্ত করুন। UIKit র্যাপার RespondoChatViewController, ডেলিগেটের পূর্ণ পরিসর এবং সমস্যা সমাধান নিয়ে বিস্তারিত আছে iOS SDK শুরু করার গাইডে; SDK-র সোর্স কোড উন্মুক্ত আছে GitHub-এ।