معرفی پروتکل PusheProtocol

پروتکل PusheProtocol، توابعی را که پوشه در اختیار کاربر قرار می‌دهد، در خود دارد و کلاس ‍‍PusheClient این پروتکل را پیاده‌سازی کرده است. این توابع در ادامه معرفی شده‌اند.

functionها

didReceiveNotificationExtensionRequest(::)

@available(iOS 10.0, *)
@objc(didReceiveNotificationExtensionRequest::) func didReceiveNotificationExtensionRequest(mutableContent: UNMutableNotificationContent, contentHandler: @escaping (UNNotificationContent) -> ())

این تابع محتوای ضمیمه شده به پوش نوتیفیکیشن را دانلود می‌کند. این تابع را باید در تابع

didReceive(_:withContentHandler:)

از کلاس NotificationService که در Target متناظر با NotificationServiceExtension قرار دارد، call کنید.

       نحوه اضافه کردن Notification Service Extension


isRegistered()

@objc(isRegistered) func isRegistered() -> Bool

وضعیت ثبت دستگاه در سرورهای پوشه را مشخص می‌کند.


getAPNsToken()

@objc(getAPNsTokenAsString) func getAPNsToken() -> String?
@objc(getAPNsTokenAsData) func getAPNsToken() -> Data?

در صورت دریافت توکن APNs توسط دستگاه، این توکن رو بر‌می‌گرداند. درغیراین‌صورت nil برمی‌گرداند.


getDeviceId()

@objc(getDeviceId) func getDeviceId() -> String?

مقدار متناظر با

UIDevice.current.identifierForVendor?.uuidString

را برای دستگاه برمی‌گرداند.


getAdvertisingId()

@objc(getAdvertisingId) func getAdvertisingId() -> String

مقدار متناظر با

ASIdentifierManager.shared().advertisingIdentifier.uuidString

را برای دستگاه برمی‌گرداند.


subscribe(to:)

@objc(subscribe:) func subscribe(to topic: String)

user را در topic ورودی، ثبت‌نام می‌کند.

subscribe(to:completionHandler:)

@objc(subscribe::) func subscribe(to topic: String, completionHandler: @escaping (Error?) -> ())

user را در topic ورودی ثبت‌نام می‌کند، سپس closure ورودی را اجرا می‌کند.


unsubscribe(from:)

@objc(unsubscribe:) func unsubscribe(from topic: String)

ثبت‌نام user در topic ورودی را باطل می‌کند.

unsubscribe(from:completionHandler:)

@objc(unsubscribe::) func unsubscribe(from topic: String, completionHandler: @escaping (Error?) -> ())

ثبت‌نام user را در topic ورودی باطل می‌کند، سپس closure ورودی را اجرا می‌کند.


getSubscribedTopics()

@objc(getSubscribedTopics) func getSubscribedTopics() -> [String]

تاپیک‌هایی که کاربر در آن‌ها عضویت دارد را برمی‌گرداند.


addTags(with:)

@objc(addTags:) func addTags(with keysAndValues: [String: String])

tagهای ورودی را برای کاربر ثبت می‌کند. توجه کنید که برای هر دستگاه حداکثر می‌توانید ۱۰ عدد tag تعریف کنید.


removeTags(with:)

@objc(removeTags:) func removeTags(with keys: [String])

تگ‌های دارای کلید‌های مشخص‌شده را برای کاربر در صورت وجود حذف می‌کند.


getSubscribedTags()

@objc(getSubscribedTags) func getSubscribedTags() -> [String: String]

یک دیکشنری شامل تگ‌هایی که برای کاربر ثبت شده‌اند را برمی‌گرداند.


sendEvent(event:)

@objc(sendEvent:) func sendEvent(event: Event)

رویداد ورودی را برای کاربر ثبت می‌کند.

sendEvent(with:)

@objc(sendEventWithName:) func sendEvent(with name: String)

رویدادی را با نام ورودی می‌سازد و برای کاربر ثبت می‌کند.

property ها

registerationCompletionHandler

@objc var registerationCompletionHandler: (() -> ())? { get set }

می‌توانید callback خود برای رجیسترشدن دستگاه در پوشه را به این متغیر ‍‍‍‍assign کنید. پس از رجیستر شدن دستگاه در پوشه، این closure اجرا خواهد شد.