বিষয়বস্তুতে যান

iOS লাইভ অ্যাক্টিভিটিজ

লাইভ অ্যাক্টিভিটিজ আপনার অ্যাপের সবচেয়ে সাম্প্রতিক ডেটা iPhone বা iPad লক স্ক্রিনে এবং ডাইনামিক আইল্যান্ডে প্রদর্শন করে। এই বৈশিষ্ট্যটি ব্যবহারকারীদের এক নজরে লাইভ তথ্য দেখতে এবং প্রদর্শিত তথ্যের সাথে সম্পর্কিত দ্রুত কাজ সম্পাদন করতে দেয়।

লাইভ অ্যাক্টিভিটিজ ব্যবহারের কয়েকটি উদাহরণ এখানে দেওয়া হলো:

  • একটি ডেলিভারি অ্যাপে অর্ডারের স্ট্যাটাস দেখান;
  • একটি প্রশিক্ষণ অ্যাপে রিয়েল-টাইম কাউন্টডাউন প্রদান করুন;
  • একটি ট্যাক্সি অ্যাপে ট্র্যাকিং তথ্য দেখান;
  • একটি স্পোর্টস অ্যাপে গেমের পরিসংখ্যান এবং বর্তমান স্কোর প্রদর্শন করুন;
  • একটি আবহাওয়া অ্যাপে ঘণ্টার পূর্বাভাস প্রদান করুন।

আপনি নিচে বর্ণিত Pushwoosh iOS SDK ব্যবহার করে লাইভ অ্যাক্টিভিটিজ সক্ষম করতে পারেন। লাইভ অ্যাক্টিভিটিজ পরিচালনা করতে এবং তাদের বিষয়বস্তু আপডেট করতে, /updateLiveActivity মেথডটি ব্যবহার করুন।

সেটআপ

Anchor link to

একটি উইজেট এক্সটেনশন যোগ করুন

Anchor link to
  1. একটি নতুন টার্গেট তৈরি করুন

File > New > Target-এ যান এবং Widget Extension নির্বাচন করুন।

  1. উইজেট এক্সটেনশন কনফিগারেশন অনুগ্রহ করে একটি নাম লিখুন এবং Include Live Activity নির্বাচন করতে ভুলবেন না এবং Finish-এ ক্লিক করুন।

Info.plist কনফিগারেশন

Anchor link to

প্রাথমিক টার্গেটে Info.plist ফাইলটি খুঁজুন, “Supports Live Activities” কী যোগ করুন এবং এর মান YES সেট করুন।

<key>NSSupportsLiveActivities</key>
<true/>

অ্যাপ থেকে লাইভ অ্যাক্টিভিটিজ সক্ষম করা

Anchor link to

লাইভ অ্যাক্টিভিটিজ সক্ষম করতে, আপনার বিদ্যমান উইজেট এক্সটেনশনে তাদের কোড যোগ করুন অথবা যদি আপনার অ্যাপে এটি না থাকে তবে একটি নতুন তৈরি করুন। লাইভ অ্যাক্টিভিটিজ তাদের ইউজার ইন্টারফেসের জন্য SwiftUI এবং WidgetKit কার্যকারিতা ব্যবহার করে। ActivityKit প্রতিটি লাইভ অ্যাক্টিভিটির জীবনচক্র পরিচালনা করে: এর API একটি লাইভ অ্যাক্টিভিটি অনুরোধ, আপডেট এবং শেষ করতে এবং ActivityKit পুশ নোটিফিকেশন গ্রহণ করতে ব্যবহৃত হয়। আপনি Apple ডকুমেন্টেশনে লাইভ অ্যাক্টিভিটিজ সম্পর্কে আরও জানতে পারেন।

  1. Xcode-এ আপনার প্রকল্পের ContentView ফাইলে নেভিগেট করুন এবং একটি Button তৈরি করুন
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(spacing: 20) {
Button(action: {
LiveActivityManager.shared.startActivity()
}, label: {
Text("Start Live Activity")
.foregroundColor(.white)
.padding()
.background(Color.blue)
.cornerRadius(10)
})
}
.padding()
}
}
#Preview {
ContentView()
}
  1. লাইভ অ্যাক্টিভিটিজ পরিচালনা করার জন্য একটি LiveActivityManager.swift ফাইল তৈরি করুন
import Foundation
import ActivityKit
import UIKit
import PushwooshFramework
import PushwooshLiveActivities
class LiveActivityManager: NSObject, ObservableObject {
public static let shared: LiveActivityManager = LiveActivityManager()
private var currentActivity: Activity<FoodDeliveryAttributes>? = nil
override init() {
super.init()
}
func startActivity() {
guard ActivityAuthorizationInfo().areActivitiesEnabled else {
print("You can't start live activity.")
return
}
do {
let pushwooshData = PushwooshLiveActivityAttributeData(activityId: "activity_id")
let atttribute = FoodDeliveryAttributes(orderNumber: "1234567", pushwoosh: pushwooshData)
let initialState = FoodDeliveryAttributes.ContentState(
status: "Preparing your meal",
estimatedTime: "25 min",
emoji: "👨‍🍳",
pushwoosh: nil
)
let activity = try Activity<FoodDeliveryAttributes>.request(
attributes: atttribute,
content: .init(state:initialState , staleDate: nil),
pushType: .token
)
self.currentActivity = activity
Task {
for await pushToken in activity.pushTokenUpdates {
let pushTokenString = pushToken.reduce("") {
$0 + String(format: "%02x", $1)
}
print("Activity:\(activity.id) push token: \(pushTokenString)")
// MARK: - Send Push Token to Pushwoosh
Pushwoosh.LiveActivities.startLiveActivity(
token: pushTokenString,
activityId: "activity_id"
)
}
}
} catch {
print("Start Activity Error: \(error.localizedDescription)")
}
}
}
  1. এইটুকুই, এখন আমরা প্রকল্পটি চালাই এবং ‘Start Live Activity’ বোতামটি চাপি। তারপর আমরা লক স্ক্রিনে নেভিগেট করি এবং তৈরি করা লাইভ অ্যাক্টিভিটি দেখি।

একটি রিমোট পুশ নোটিফিকেশন দিয়ে লাইভ অ্যাক্টিভিটি শুরু করুন

Anchor link to
  1. রিমোট পুশ নোটিফিকেশনের মাধ্যমে একটি লাইভ অ্যাক্টিভিটি শুরু করতে, আপনাকে Pushwoosh-এ pushToStartTokenUpdates টোকেন পাঠাতে হবে।
func getPushToStartToken() {
if #available(iOS 17.2, *) {
Task {
for await data in Activity<LiveActivityAttributes>.pushToStartTokenUpdates {
let token = data.map {String(format: "%02x", $0)}.joined()
print("Activity PushToStart Token: \(token)")
// Send `pushToStartTokenUpdates` token to Pushwoosh
try await Pushwoosh.LiveActivities.sendPushToStartLiveActivity(token: token)
}
}
}
}
  1. একটি রিমোট পুশ নোটিফিকেশন দিয়ে একটি লাইভ অ্যাক্টিভিটি শুরু করুন

লাইভ অ্যাক্টিভিটিজ পরিচালনা

Anchor link to

Pushwoosh iOS SDK লাইভ অ্যাক্টিভিটিজের সাথে কাজ করার জন্য নিম্নলিখিত মেথডগুলো প্রদান করে:

// Send Live Activity Push To Start Token to Pushwoosh
static func sendPushToStartLiveActivity(token: String)
static func sendPushToStartLiveActivity(token: String, completion: @escaping (Error?) -> Void)
// Start Live Activity Methods with Activity ID
static func startLiveActivity(token: String, activityId: String)
static func startLiveActivity(token: String, activityId: String, completion: @escaping (Error?) -> Void)
// Stop Live Activity Methods
static func stopLiveActivity()
static func stopLiveActivity(completion: @escaping (Error?) -> Void)
static func stopLiveActivity(activityId: String)
static func stopLiveActivity(activityId: String, completion: @escaping (Error?) -> Void)

আপনি অ্যাক্টিভিটি আইডি প্যারামিটার ব্যবহার করে সেগমেন্ট অনুযায়ী লাইভ অ্যাক্টিভিটিজ আপডেট করতে পারেন। একটি অ্যাক্টিভিটি তৈরি করার সময়, আপনাকে মেথডে একটি অনন্য অ্যাক্টিভিটি আইডি প্যারামিটার পাস করতে হবে, যা একটি নির্দিষ্ট ব্যবহারকারী সেগমেন্টের জন্য প্রাসঙ্গিক হবে।

উদাহরণস্বরূপ, N সংখ্যক ব্যবহারকারী একটি লাইভ অ্যাক্টিভিটিতে একই ইভেন্টে সাবস্ক্রাইব করেছেন। এটি প্রয়োজন যে অ্যাক্টিভিটি আইডি প্যারামিটারটি এই সমস্ত N ব্যবহারকারীর জন্য অনন্য হতে হবে।

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

static func stopLiveActivity()
static func stopLiveActivity(completion: @escaping (Error?) -> Void)

Setup() মেথড।

Anchor link to

Pushwoosh PushwooshLiveActivities.setup ফাংশন চালু করে অ্যাক্টিভিটি আইডি স্থানান্তরকে সহজ করে, যা অ্যাপ্লিকেশনের মধ্যে একটি লাইভ অ্যাক্টিভিটির সম্পূর্ণ জীবনচক্র পরিচালনা করে। এই ফাংশনটি স্বয়ংক্রিয়ভাবে pushToStart এবং pushToUpdate টোকেন আপডেট উভয়ই শোনে। এই মেথডটি ব্যবহার করে, অ্যাপ্লিকেশনটিকে আর ম্যানুয়ালি লাইভ অ্যাক্টিভিটিজ শুরু করার ট্র্যাক রাখতে বা অ্যাক্টিভিটি আপডেটের জন্য টোকেন আপডেট পরিচালনা করতে হবে না।

আমরা এই মেথডটি ব্যবহার করার সুপারিশ করি কারণ এটি আমাদের দিকে সমস্ত টোকেন ব্যবস্থাপনা পরিচালনা করে, যা আপনার দিকে রক্ষণাবেক্ষণ করার জন্য প্রয়োজনীয় কোডের পরিমাণ কমিয়ে দেয়। এটি ইন্টিগ্রেশনকে সহজ করে এবং আপনার অ্যাপের জন্য একটি মসৃণ, আরও কার্যকর অভিজ্ঞতা নিশ্চিত করে।

AppDelegate-এ, নিশ্চিত করুন যে আপনি PushwooshFramework এবং PushwooshLiveActivities ইম্পোর্ট করেছেন এবং Pushwoosh.LiveActivities মডিউল থেকে setup মেথডটি কল করেছেন।

AppDelegate.swift

if #available(iOS 16.1, *) {
Pushwoosh.LiveActivities.setup(FoodDeliveryAttributes.self)
}

FoodDeliveryAttributes

import WidgetKit
import SwiftUI
import ActivityKit
import PushwooshFramework
import PushwooshLiveActivities
struct FoodDeliveryAttributes: PushwooshLiveActivityAttributes {
public struct ContentState: PushwooshLiveActivityContentState {
var status: String
var estimatedTime: String
var emoji: String
var pushwoosh: PushwooshLiveActivityContentStateData?
}
var orderNumber: String
var pushwoosh: PushwooshLiveActivityAttributeData
}

FoodDeliveryAttributes: এই কাঠামোটি PushwooshLiveActivityAttributes প্রোটোকলের সাথে সঙ্গতিপূর্ণ। এটি অ্যাপের মধ্যে একটি লাইভ অ্যাক্টিভিটির অ্যাট্রিবিউট সংজ্ঞায়িত করতে ব্যবহৃত হয়।

মাইগ্রেশন গাইড

Anchor link to

Pushwoosh iOS SDK-এর 6.8.0 সংস্করণ থেকে, আমরা SDK কাঠামো আপডেট করেছি। লাইভ অ্যাক্টিভিটিজ মেথডগুলো এখন PushwooshLiveActivities মডিউলের মাধ্যমে অ্যাক্সেস করা হয়।

আপনি যদি Pushwoosh iOS SDK-এর 6.8.0-এর আগের কোনো সংস্করণ ব্যবহার করে থাকেন এবং নিচে তালিকাভুক্ত মেথডগুলো কল করে থাকেন, এবং তারপর 6.8.0 বা তার পরের সংস্করণে আপডেট করে থাকেন, তাহলে অনুগ্রহ করে নিম্নলিখিত পরিবর্তনগুলো লক্ষ্য করুন:

static func setup<Attributes: PushwooshLiveActivityAttributes>(_ activityType: Attributes.Type)
static func defaultSetup()
static func defaultStart(_ activityId: String, attributes: [String: Any], content: [String: Any])

এখন, এই মেথডগুলো অ্যাক্সেস করতে, আপনার লাইভঅ্যাক্টিভিটি মডিউল ব্যবহার করা উচিত।

import PushwooshFramework
import PushwooshLiveActivities
Pushwoosh.LiveActivities.setup(FoodDeliveryAttributes.self)
Pushwoosh.LiveActivities.defaultSetup()
Pushwoosh.LiveActivities.defaultStart("activity_id",
attributes: ["key_attribute": "value_attribute"],
content: ["key_content": "value_content"])

আমরা নিচে তালিকাভুক্ত Pushwoosh.sharedInstance()-এর মাধ্যমে মেথডগুলোর জন্য সমর্থন বজায় রেখেছি, কিন্তু অনুগ্রহ করে মনে রাখবেন যে এই মেথডগুলো ভবিষ্যতের রিলিজে অবচিত (deprecated) করা হবে।

// Send Live Activity Push To Start Token to Pushwoosh
static func sendPushToStartLiveActivity(token: String)
static func sendPushToStartLiveActivity(token: String, completion: @escaping (Error?) -> Void)
// Start Live Activity Methods with Activity ID
static func startLiveActivity(token: String, activityId: String)
static func startLiveActivity(token: String, activityId: String, completion: @escaping (Error?) -> Void)
// Stop Live Activity Methods
static func stopLiveActivity()
static func stopLiveActivity(completion: @escaping (Error?) -> Void)
static func stopLiveActivity(activityId: String)
static func stopLiveActivity(activityId: String, completion: @escaping (Error?) -> Void)