onesignal pushe.co s-3.664-0.699-5.062-2.099c-1.397-1.398-2.097-3.087-2.097-5.065s0.699-3.667,2.097-5.065c1.397-1.399,3.085-2.099,5.062-2.099 s3.664,0.699,5.062,2.099C223.888,120.556,224.587,122.244,224.587,124.223z"/>

آی او اس


توجه داشته باشید که برای استفاده از امکان دریافت Push notification در برنامه‌های خود و حتی تست آن نیاز است
developer account اپل را داشته باشید.

ایجاد و راه‌اندازی پروژه در XCode

ایجاد پروژه در XCode و فعال‌کردن قابلیت‌های موردنیاز برای دریافت پوش نوتیفیکیشن

  • نرم‌افزار XCode را باز کرده و پروژه iOS خود را در آن ایجاد کنید.



  • فایل پروژه را انتخاب کنید. از لیست Targetها، Target اصلی برنامه و از لیست عنوان‌ها، عنوان Capabilitites (در Xcode ورژن ۱۱ این عنوان به Signing & Capabilities تغییر یافته است) را انتخاب کنید. از بین گزینه‌های موجود، Background Modes را فعال کنید و ‌Background fetch و Remote notifications را تیک بزنید.

  • گزینه Push Notifications را نیز فعال کنید.

همان‌طور که اشاره شد، در Xcode ورژن ۱۱، UI مربوط به این قسمت اندکی عوض شده است. برای افزودن قابلیت‌های اشاره شده در Xcode ورژن ۱۱ باید به این صورت عمل کنید:




  • از لیست عنوان‌ها، عنوان General را انتخاب کنید و مقدار فیلد Deployment Target را به نسخه ۱۰ یا نسخه‌های بعد از ۱۰ سیستم‌عامل iOS تغییر دهید. (لازم به ذکر است که پوشه از نسخه ۸ سیستم‌عامل iOS پشتیبانی می‌کند، ولی قابلیت نمایش مدیا در push notification از نسخه ۱۰ به سیستم‌عامل iOS اضافه شده است.)

افزودن سرویس notification service extension (برای نمایش عکس، فیلم و … در اعلان)

برای این‌که کاربران برنامه‌تان امکان دریافت Rich Media (عکس، فیلم و …) را داشته باشند، باید در برنامه‌تان Notification Service Extension را پیاده‌سازی کنید:

  • یک Target جدید ایجاد کنید:

  • Notification Service Extension را انتخاب کنید:

  • نام را برای Target جدید خود وارد کنید:

  • Cancel را انتخاب کنید تا Target فعلی برنامه عوض نشود.

  • البته همواره می‌توانید Target خود را با استفاده از گزینه موجود در سمت بالا و چپ Xcode تغییر دهید.

  • فایل پروژه را انتخاب کنید. از لیست Targetها، Target مربوط به Notification Service Extension و از لیست عنوان‌ها، عنوان General را انتخاب کنید و مقدار فیلد Deployment target را برابر با یا بیشتر از مقداری که برای Target اصلی برنامه وارد کردید، قرار دهید:

  • مطابق شکل یک فولدر با نامی که برای Notification Service Extension خود وارد کردید، در پروژه‌تان ایجاد می‌شود.

نصب و راه‌اندازی کتابخانه پوشه

برای نصب پوشه میتوانید از 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
  • در صورتی‌که از زبان Swift استفاده می‌کنید:

    محتوای فایل AppDelegate.swift را براساس کد زیر تغییر دهید: (AppId خود را که از کنسول پوشه دریافت کرده‌اید، به عنوان آرگومان به Pushe.shared.start پاس بدهید.)

import UIKit
import Pushe

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        Pushe.shared.pusheDelegate = somethingImplementingPusheDelegate    // this line is optional
        Pushe.shared.start(pusheAppId: "enter your appId from pushe console here")

        return true
    }
}

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

همچنین محتوای فایل NotificationService.swift را مطابق زیر تغییر دهید:

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 {
            Pushe.shared.didReceiveNotificationExtensionRequest(mutableContent: bestAttemptContent, contentHandler: contentHandler)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        if let contentHandler = self.contentHandler, let bestAttemptContent =  self.bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }
}
  • در صورتی‌که از زبان Objective-C استفاده می‌کنید:

در ابتدا سعی کنید پروژه را Build کنید، اگر با خطای undefined symbol مواجه شدید، گام‌های ۱ و ۲ را انجام دهید، در غیراین‌صورت می‌توانید با انجام گام ۳ پوشه را راه‌اندازی کنید:

اطمینان حاصل کنید که در target اصلی برنامه و Notification Service Extension، مقدار فیلد Always Embed Swift Standard Libraries در قسمت Build Settings برابر با Yes باشد.

به پروژه‌تان یک Objective-C bridging header اضافه کنید:

بر روی فایل پروژه‌تان راست کلیک کنید و New File بزنید.

از بین گزینه‌های موجود، Swift File را انتخاب کنید وNext را بزنید.

اطمینان حاصل کنید که این فایل هم عضو target اصلی و هم عضو Notification Service Extension پروژه باشد و سپس Create را بزنید.

در مرحله آخر، گزینه Create bridging header را انتخاب کنید.

محتوای فایل AppDelegate.m را براساس کد زیر تغییر دهید:

#import "AppDelegate.h"
@import Pushe;

@interface AppDelegate () <UNUserNotificationCenterDelegate>

@end

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    Pushe.shared.delegate = somethingImplementingPusheDelegate;    // this line is optional
    [Pushe.shared start:@"enter your appId from pushe console here"];

    return YES;
}

@end

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

همچنین محتوای فایل NotificationService.m را مطابق زیر تغییر دهید:

#import "NotificationService.h"
@import Pushe;

@interface NotificationService ()

@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { 
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    [PusheApp didReceiveNotificationExtensionRequest:self.receivedRequest
                      withMutableNotificationContent:self.bestAttemptContent];

    self.contentHandler(self.bestAttemptContent);
}

- (void)serviceExtensionTimeWillExpire {
    self.contentHandler(self.bestAttemptContent);
}

@end

دریافت Credential از Firebase

ثبت برنامه در فایربیس و دریافت Sender ID و Server key

  • به صفحه کنسول فایربیس بروید. اگر تاکنون پروژه‌ای را که میخواهید برنامه‌تان را به آن اضافه کنید، نساخته‌اید، یک پروژه جدید بسازید:

  • برنامه iOS جدیدی را به پروژه خود اضافه کنید:

  • Bundle Identifier متناظر با Target اصلی برنامه خود در Xcode را وارد کنید:

  • فایل GoogleService-Info.plist را دانلود کنید.

  • فایل دانلود شده در قسمت قبل را در فولدر مربوط به پروژه اصلی خود در Xcode بیندازید(drag&drop):

  • فایل موردنظر به فایل‌های پروژه شما اضافه خواهد شد:

  • در این مرحله فقط کافیست next را بزنید:

  • در این مرحله نیز فقط next را بزنید:

  • برروی Skip this step کلیک کنید:

  • در قسمت تنظیمات برای برنامه‌ای که ایجاد کرده‌اید، عنوان Cloud Messaging را انتخاب کنید. Server key و Sender ID را در کنسول پوشه برای ساخت برنامه جدید باید وارد کنید.

  • در این قسمت باید APNs Authentication Key خود را آپلود کنید.

نحوه ایجاد APNs Authentication Key

  • وارد اکانت Apple Developer خود شوید و Certificates, Identifiers & Profiles را انتخاب کنید:

  • بر روی Keys کلیک کنید. اگر از قبل کلیدی برای APNs نساخته‌اید، بر روی دکمه + کلیک کنید:

  • گزینه Apple Push Notificions service را تیک بزنید و برروی Continue کلیک کنید:

  • برروی Register کلیک کنید:

  • فایل موردنظر را دانلود کنید و Done را بزنید. دقت کنید که این فایل فقط یک‌بار قابلیت دانلود شدن را دارد.

  • این فایل را در کنسول firebase به عنوان APNs Authentication key برای برنامه خود آپلود کنید.

همیشه در کنارتان هستیم

در اولین فرصت با ایمیل به شما پاسخ خواهیم داد.

شاید جواب سوال شما اینجا باشد: سوالات متداول ، مستندات
وارد کردن تمامی فیلد ها الزامی است.
پیام شما با موفقیت ارسال شد