सामग्री पर जाएं

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 फ़ाइल पर जाएँ और एक बटन बनाएँ
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)
// Schedule a Live Activity to start at a future date (iOS 26.0+)
static func schedule<Attributes: PushwooshLiveActivityAttributes>(attributes: Attributes, contentState: Attributes.ContentState, at startDate: Date, alertTitle: String, alertBody: String) throws -> Activity<Attributes>
// Cancel a scheduled or running Live Activity by its Activity ID (iOS 16.2+)
static func cancel<Attributes: PushwooshLiveActivityAttributes>(_ activityType: Attributes.Type, activityId: String)

आप Activity ID पैरामीटर का उपयोग करके सेगमेंट द्वारा लाइव एक्टिविटीज़ को भी अपडेट कर सकते हैं। एक एक्टिविटी बनाते समय, आपको विधि में एक अद्वितीय Activity ID पैरामीटर पास करना होगा, जो एक विशिष्ट उपयोगकर्ता सेगमेंट के लिए प्रासंगिक होगा।

उदाहरण के लिए, N उपयोगकर्ताओं ने एक लाइव एक्टिविटी में एक ही ईवेंट की सदस्यता ली है। यह आवश्यक है कि Activity ID पैरामीटर इन सभी N उपयोगकर्ताओं के लिए अद्वितीय हो।

जब आप एक लाइव एक्टिविटी के साथ काम करना समाप्त कर लें, तो इन विधियों का उपयोग करें:

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

भविष्य की तारीख में शुरू होने के लिए एक लाइव एक्टिविटी को शेड्यूल करना

Anchor link to

एक लाइव एक्टिविटी को तुरंत शुरू करने के बजाय, आप इसे भविष्य की तारीख में शुरू करने के लिए शेड्यूल कर सकते हैं। alertTitle और alertBody उपयोगकर्ता को स्थानीय अधिसूचना अलर्ट में दिखाए जाते हैं जो तब फायर होता है जब शेड्यूल की गई एक्टिविटी वास्तव में शुरू होती है:

if #available(iOS 26.0, *) {
let startDate = Date().addingTimeInterval(3600) // starts in 1 hour
do {
let activity = try Pushwoosh.LiveActivities.schedule(
attributes: atttribute,
contentState: initialState,
at: startDate,
alertTitle: "Game starting!",
alertBody: "The match is about to begin"
)
self.currentActivity = activity
} catch {
print("Schedule Activity Error: \(error.localizedDescription)")
}
}

startDate भविष्य में होना चाहिए, अन्यथा कॉल थ्रो हो जाती है। जब ऐप फोरग्राउंड में हो तो मुख्य थ्रेड पर schedule को कॉल करें। Pushwoosh के लिए कोई शेड्यूल-टाइम अनुरोध नहीं है: सर्वर को एक्टिविटी के बारे में तब पता चलता है जब वह वास्तव में शुरू होती है और setup() विधि द्वारा स्थापित उसी टोकन ऑब्जर्वर के माध्यम से अपना पुश टोकन प्राप्त करती है (नीचे देखें)।

एक्टिविटी ID द्वारा एक लाइव एक्टिविटी को रद्द करना

Anchor link to

Activity इंस्टेंस का संदर्भ रखे बिना उसकी एक्टिविटी ID द्वारा एक लाइव एक्टिविटी को रद्द करने के लिए cancel(_:activityId:) का उपयोग करें:

if #available(iOS 16.2, *) {
Pushwoosh.LiveActivities.cancel(FoodDeliveryAttributes.self, activityId: "activity_id")
}

cancel डिवाइस पर तुरंत एक्टिविटी को समाप्त कर देता है और Pushwoosh सर्वर को सूचित करता है। यह stopLiveActivity(activityId:) से अलग है, जो केवल सर्वर को सूचित करता है और डिवाइस पर सीधे एक्टिविटी को समाप्त नहीं करता है। cancel एक लाइव एक्टिविटी के लिए भी काम करता है जिसे schedule के साथ शेड्यूल किया गया था लेकिन अभी तक शुरू नहीं हुई है - यह शुरू होने से पहले ही रद्द हो जाती है।

Setup() विधि।

Anchor link to

Pushwoosh PushwooshLiveActivities.setup फ़ंक्शन को पेश करके एक्टिविटी ID के हस्तांतरण को सरल बनाता है, जो एप्लिकेशन के भीतर एक लाइव एक्टिविटी के पूरे जीवनचक्र को संभालता है। यह फ़ंक्शन स्वचालित रूप से 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])

अब, इन विधियों तक पहुँचने के लिए, आपको LiveActivity मॉड्यूल का उपयोग करना चाहिए।

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() के माध्यम से विधियों के लिए समर्थन भी बनाए रखा है, लेकिन कृपया ध्यान दें कि इन विधियों को भविष्य के रिलीज में हटा दिया जाएगा।

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