نصب و راه‌اندازی پوشه در Xcode

پیش‌نیازها

نصب پوشه با استفاده از cocoapods

در Podfile پوشه را برای Target اصلی و Notification Service Extension اضافه کنید:

target 'PusheDemo' do
use_frameworks!
pod 'Pushe'
target 'PusheDemoTests' do
inherit! :search_paths
# Pods for testing
end
target 'PusheDemoUITests' do
inherit! :search_paths
# Pods for testing
end
end
target 'DemoNotificationServiceExtension' do
use_frameworks!
pod 'Pushe'
end

سپس با دستور زیر می‌توانید پوشه را نصب کنید.

pod install

توجه کنید که ورژن ۰.۹.۰ آخرین ورژن پوشه برای iOS است که از xcode ورژن ۱۱.۲ و swift ورژن ۵.۱.۲ پشتیبانی می‌کند. در صورتی‌که می‌خواهید ورژن خاصی از پوشه مثلا ورژن ۰.۹.۰ را نصب کنید، به جای

pod Pushe

از دستور

pod 'Pushe', '0.9.0'

استفاده کنید.

اضافه‌کردن کد‌های لازم

در Target مربوط به برنامه:

// AppDelegate.swift file
import UIKit
import Pushe
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
PusheClient.shared.pusheDelegate = somethingImplementingPusheDelegate // this line is optional
PusheClient.shared.start(pusheAppId: "enter your appId from pushe console here")
return true
}
}

و در Target مربوط به NotificationServiceExtension:

// NotificationService.swift.swift file
import UserNotifications
import Pushe
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = self.bestAttemptContent {
PusheClient.shared.didReceiveNotificationExtensionRequest(mutableContent: bestAttemptContent, contentHandler: contentHandler)
}
}
override func serviceExtensionTimeWillExpire() {
if let contentHandler = self.contentHandler, let bestAttemptContent = self.bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}

اگر مایل باشید، می‌توانید پروتکل pusheDelegate را پیاده‌سازی کنید تا بتوانید callbackهایی را در هنگام دریافت پوش‌نوتیفیکیشن، کلیک کاربر و ... اجرا کنید.

تست و ثبت دستگاه در پوشه

پس از اجرای برنامه و فراخوانی کد رجیستر پوشه، باید در Xcode console لاگ‌های زیر را ببینید (ممکن است به دلیل ارتباط با سرور این پروسه چند ثانیه طول بکشد):

registering in Pushe ...
📗 -> successfully registered in Pushe


ادامه‌ی کار

(بر روی لینک مورد نظر کلیک کنید)

پروژه‌ی نمونه در گیت‌هاب

بررسی امکانات در نمونه‌ای از قبل طراحی شده دارای تمام امکانات کتابخانه‌ی پوشه

سوالات و مشکلات احتمالی

در صورتی که در یکی از مراحل زیر به مشکلی برخوردید یا هر سوالی در مورد کتابخانه‌ دارید

مشاهده‌ی امکانات بیشتر

مشاهده‌ی امکانات پیشرفته ارائه‌ شده در کتابخانه‌‌ی پوشه