انتقل إلى المحتوى

تخصيص iOS SDK

التكامل

Anchor link to

الروابط العميقة

Anchor link to

في ملف Info.plist الخاص بك، أضف مصفوفة URL types مع URL Identifier و URL Scheme.
في المثال أدناه، URL Scheme هو com.pushwoosh و URL Identifier هو promotion.

في ملف App Delegate الخاص بك (عادةً AppDelegate.m لنظام iOS 12 والإصدارات الأقدم، أو SceneDelegate.m لنظام iOS 13 والإصدارات الأحدث)، أضف دالة التفويض openURL المناسبة كما هو موضح في المثال أدناه. يتحقق المثال من الصفحة الصحيحة، ويحلل قيمة “id” من عنوان URL، ويفتح PromoPageViewController استجابةً لذلك.

AppDelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
if page == "promotion" {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

SceneDelegate.swift

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else { return }
let components = URLComponents(url: urlContext.url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
guard page == "promotion" else {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

تتبع عمليات الشراء داخل التطبيق

Anchor link to

بشكل افتراضي، يتم تعطيل تتبع عمليات الشراء داخل التطبيق. إذا كنت ترغب في تتبع عمليات الشراء داخل التطبيق عند تكوين Customer Journeys، فقم بتعيين علامة Pushwoosh_PURCHASE_TRACKING_ENABLED إلى true في ملف info.plist. يمكنك العثور على قائمة بالعلامات المتاحة في الجدول.

إذا كنت ترغب في تتبع عمليات الشراء داخل التطبيق يدويًا، يمكنك استخدام الكود أدناه.

في paymentQueue:updatedTransactions: delegate استدعِ sendSKPaymentTransactions method من PushManager

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
// In-Apps Tracking Pushwoosh code here
Pushwoosh.sharedInstance().sendSKPaymentTransactions(transactions)
// the rest of the code, consume transactions, etc
}
InAppTrackingViewController.swift

إشعارات الدفع للمناطق الجغرافية (Geozones)

Anchor link to

يتم تغليف إشعارات الدفع للمناطق الجغرافية (Geozones) في إطار عمل منفصل PushwooshGeozones.

  1. أضف PushwooshGeozones.framework إلى مشروعك

لإضافة PushwooshGeozones.framework إلى مشروعك باستخدام مدير التبعيات، ضع الأسطر التالية في podfile أو cartfile الخاص بك:

pod 'PushwooshXCFramework/Geozones'

بدلاً من ذلك، يمكنك ببساطة سحب وإفلات إطار العمل في Link Binaries With Libraries في Build Phases لمشروعك.

  1. أضف المفاتيح التالية إلى Info.plist الخاص بك:
  • NSLocationWhenInUseUsageDescription(مطلوب) لكي يتتبع التطبيق المناطق الجغرافية (Geozones) فقط أثناء تشغيله في المقدمة.
  • NSLocationAlwaysAndWhenInUseUsageDescription(مطلوب) لكي يتتبع التطبيق المناطق الجغرافية (Geozones) في كل من المقدمة والخلفية ولإظهار نافذة منبثقة لطلب الإذن.
  • NSLocationAlwaysUsageDescription(اختياري) لكي يتتبع التطبيق المناطق الجغرافية (Geozones) في جميع الأوقات؛ يجب استخدامه إذا كان تطبيقك يستهدف iOS 10 والإصدارات الأقدم.
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>for app to track Geozones in both conditions and to show a permission request dialog</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>for app to track Geozones only while running in the foreground</string>

  1. استيراد إطار العمل
import PushwooshGeozones
  1. بدء تتبع المناطق الجغرافية (Geozones)
PWGeozonesManager.shared()?.startLocationTracking()

مرجع GitHub

override func viewDidLoad() {
super.viewDidLoad()
// Start Geozones tracking when needed
PWGeozonesManager.shared().startLocationTracking()
}

إنشاء قائمة انتظار للوسائط الغنية (Rich Media)

Anchor link to

في حال وجود عدة صفحات وسائط غنية (Rich Media) لعرضها في وقت واحد (على سبيل المثال، تحدث أحداث التشغيل لاثنين أو أكثر من الرسائل داخل التطبيق في لحظة واحدة، أو يتم عرض صفحة وسائط غنية بالفعل في اللحظة التي يحدث فيها حدث تشغيل مختلف)، يمكنك إعداد قائمة انتظار لعرض صفحات الوسائط الغنية. لإنشاء قائمة انتظار، اتبع الخطوات الموضحة أدناه.

  1. إنشاء فئة تطبق PWRichMediaPresentingDelegate:
@interface ChainedRichMediaPresentingDelegate () <PWRichMediaPresentingDelegate>
@property (nonatomic) NSMutableArray *queue;
@property (nonatomic) BOOL inAppIsPresenting;
@end
@implementation ChainedRichMediaPresentingDelegate
- (instancetype)init {
self = [super init];
if (self) {
_queue = [NSMutableArray new];
}
return self;
}
- (BOOL)richMediaManager:(PWRichMediaManager *)richMediaManager shouldPresentRichMedia:(PWRichMedia *)richMedia {
[_queue addObject:richMedia];
return !_inAppIsPresenting;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didPresentRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = YES;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didCloseRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = NO;
[_queue removeObject:richMedia];
if (_queue.count) {
[[PWRichMediaManager sharedManager] presentRichMedia:_queue.firstObject];
}
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager presentingDidFailForRichMedia:(PWRichMedia *)richMedia withError:(NSError *)error {
[self richMediaManager:richMediaManager didCloseRichMedia:richMedia];
}
@end

2. قم بتعيين المفوّض:

[PWRichMediaManager sharedManager].delegate = [ChainedRichMediaPresentingDelegate new];

تشغيل تلقائي لفيديو مرسل في إشعار غني باستخدام اللمس القوي

Anchor link to

لجعل الفيديو المرسل كـ مرفق إشعار غني يتم تشغيله تلقائيًا عند توسيع الإشعار دون أي تفاعل من المستخدم، اتبع الخطوات أدناه:

  1. أضف ملحق محتوى الإشعارات (Notification Content Extension) إلى مشروعك:
  • في Xcode، حدد File > New > Target.
  • اختر Notification Content Extension.
  • قم بتعيين اسم له وأكمل الإعداد.
ملحق محتوى الإشعارات - إشعار دفع غني لنظام iOS

إذا طُلب منك رسالة “تنشيط المخطط”، فاختر إلغاء.

تنشيط مخطط محتوى الإشعارات
  1. اضبط الخصائص والأساليب في ملحق المحتوى على النحو التالي:
import UIKit
import UserNotifications
import UserNotificationsUI
import AVKit
class NotificationViewController: UIViewController, UNNotificationContentExtension {
var playerController: AVPlayerViewController!
@IBOutlet weak var playerBackgroundView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any required interface initialization here.
}
func didReceive(_ notification: UNNotification) {
let attachment = notification.request.content.attachments.first
playerController = AVPlayerViewController()
// Set height programmatically
// preferredContentSize.height = 250
if let url = attachment?.url {
setupVideoPlayer(url: url)
} else {
print("No valid URL...")
}
}
private func setupVideoPlayer(url: URL) {
guard let playerController = self.playerController else { return }
let player = AVPlayer(url: url)
playerController.player = player
playerController.view.frame = self.playerBackgroundView.bounds
playerBackgroundView.addSubview(playerController.view)
addChild(playerController)
playerController.didMove(toParent: self)
player.play()
}
  1. أدرج UIView في MainInterface.storyboard:
UIView في MainInterface.storyboard
  1. اربط playerBackgroundView IBOutlet بـ UIView الذي أضفته للتو:
اربط playerBackgroundView IBOutlet بـ UIView
  1. حدّث ملف info.plist بالإدخال التالي:
UNNotificationExtensionUserInteractionEnabled = true
UNNotificationExtensionUserInteractionEnabled = true

لإرفاق فيديو بإشعارك، أدخل عنوان URL للفيديو في حقل Media Attachment في لوحة التحكم:

عنوان URL للفيديو في حقل Media Attachment في لوحة تحكم Pushwoosh

عند إرسال إشعار عبر طلب API /createMessage، قم بتضمين عنوان URL في معلمة “ios_attachment” وتأكد من تعيين علامة “mutable-content” على `1`.

صوت دفع مخصص

Anchor link to

لتشغيل صوت مخصص عند تلقي إشعار دفع، ضع أولاً الملف الصوتي في المجلد الجذر لمشروعك.

بعد ذلك، حدد اسم ملف الصوت في معلمات الدفع - املأ حقل الصوت في الإعدادات الخاصة بنظام iOS لرسالتك أو حدد اسم الملف كقيمة لمعلمة “ios_sound” في طلب createMessage API.

يجب أن يكون الملف الصوتي للصوت المخصص لنظام iOS بأحد التنسيقات التالية: .aif، .caf، .wav. تأكد من تحديد التنسيق في اسم الملف؛ وإلا، سيتم تجاهله بواسطة Pushwoosh iOS SDK.

إشعارات الدفع المؤقتة في iOS

Anchor link to

كيف تعمل

Anchor link to

تظهر إشعارات الدفع المؤقتة بصمت في مركز إشعارات المستخدم ولكن ليس على شاشة القفل. لا يحتاج هذا النوع من الإشعارات إلى موافقة صريحة من المستخدم: يمكنك البدء في إرسالها بمجرد أن يقوم المستخدم بتثبيت تطبيقك وتشغيله.

ومع ذلك، لا يزال بإمكان المستخدمين الاشتراك في إشعارات الدفع البارزة الخاصة بك: عند فتح الإشعار المؤقت، لديهم خياران لاختيار تجربتهم - إما إبقاء الإشعارات في مركز الإشعارات دون تنبيهات وأصوات أو السماح لك بإرسال الإشعارات بشكل بارز بحيث تظهر على شاشة القفل.

تم تصميم الإشعارات المؤقتة للسماح للمستخدمين باتخاذ قرارات مستنيرة حول ما إذا كانوا يرغبون في تلقي إشعارات من تطبيقك. نظرًا لأن طلب الاشتراك الأصلي من APN يظهر للمستخدمين مرة واحدة فقط وللاشتراك لاحقًا، يجب عليهم الانتقال إلى إعدادات نظام هواتفهم، وقد لا يشترك بعض المستخدمين لأنهم لا يدركون القيمة التي يحصلون عليها من إشعاراتك. تمنح الإشعارات المؤقتة المستخدمين هذا الفهم: يمكنهم رؤية المحتوى الذي تقدمه في إشعارات الدفع وتحديد ما إذا كانوا بحاجة إلى إعلامهم بهذا المحتوى بشكل بارز.

كيفية التنفيذ

Anchor link to

1. قم بدمج Pushwoosh iOS SDK باتباع الدليل.

2. أضف السلسلة التالية إلى AppDelegate لمشروعك قبل استدعاء طريقة registerForPushNotifications():

if #available(iOS 12.0, *) {
Pushwoosh.sharedInstance().additionalAuthorizationOptions = UNAuthorizationOptions.provisional
}

هذا كل شيء! سيتلقى مستخدمو التطبيق الرسائل مباشرة إلى مركز الإشعارات الخاص بهم بمجرد تثبيت التطبيق.

شاركنا ملاحظاتك

Anchor link to

تساعدنا ملاحظاتك في إنشاء تجربة أفضل، لذلك نود أن نسمع منك إذا كان لديك أي مشاكل أثناء عملية دمج SDK. إذا واجهت أي صعوبات، فلا تتردد في مشاركة أفكارك معنا عبر هذا النموذج.