0Pricing
Swift Academy · درس

التسجيل للإشعارات الفورية

اطلب الإذن واحصل على رمز الجهاز.

التسجيل للإشعارات الفورية درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

كيف تعمل الإشعارات الفورية من البداية إلى النهاية

تنتقل الإشعارات الفورية من خادمك، مرورًا بخدمة Apple Push Notification service (APNs)، إلى جهاز محدد. ويثبت الجهاز هويته باستخدام رمز الجهاز الذي تصدره APNs. وقبل كل ذلك، يجب أن يمنح المستخدم الإذن وأن يسجل التطبيق نفسه.

// Flow: App registers -> APNs returns device token ->
// you send token to your server -> server pushes via APNs

مركز الإشعارات

يُعد UNUserNotificationCenter الكائن الوحيد الذي تستخدمه لكل ما هو محلي وعن بُعد: طلب التفويض، وتعيين المفوَّض، وجدولة الإشعارات المحلية، وقراءة الإعدادات. احصل على النسخة المشتركة.

import UserNotifications
let center = UNUserNotificationCenter.current()
// All notification configuration goes through center

طلب التفويض

يجب أن تطلب من المستخدم الإذن قبل عرض الإشعارات. يعرض requestAuthorization(options:) مطالبة النظام ويعيد ما إذا كان المستخدم قد وافق. اطلب الخيارات التي تحتاج إليها فقط: .alert و.sound و.badge.

import UserNotifications
func requestAuth() async throws -> Bool {
    let center = UNUserNotificationCenter.current()
    return try await center.requestAuthorization(
        options: [.alert, .sound, .badge])
}

التسجيل لدى APNs

يختلف التفويض عن التسجيل. بعد الحصول على الإذن أو بالتزامن معه، استدعِ registerForRemoteNotifications() على main actor. فهذا يطلب من APNs رمز جهاز. ويجب تشغيله على الخيط الرئيسي.

import UIKit
@MainActor
func registerForPush() {
    UIApplication.shared.registerForRemoteNotifications()
}

استلام رمز الجهاز

عند النجاح، يُستدعى didRegisterForRemoteNotificationsWithDeviceToken في مفوَّض التطبيق مع رمز من نوع Data. وتحوله إلى سلسلة نصية سداسية عشرية وترسلها إلى خادمك، الذي يستخدمها لاستهداف هذا الجهاز.

import UIKit
func application(
    _ app: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken
    deviceToken: Data) {
    let token = deviceToken.map {
        String(format: "%02x", $0) }.joined()
    print("APNs token:", token)
    // send token to your backend
}

معالجة فشل التسجيل

قد يفشل التسجيل بسبب عدم وجود شبكة أو استحقاق APNs أو التشغيل في بيئة غير مدعومة. طبّق didFailToRegisterForRemoteNotificationsWithError لتسجيل الخطأ والتعافي منه بسلاسة بدلًا من تعطل التطبيق.

import UIKit
func application(
    _ app: UIApplication,
    didFailToRegisterForRemoteNotificationsWithError
    error: Error) {
    print("Push registration failed:", error)
}

قد تتغير الرموز

رمز الجهاز ليس دائمًا. فهو يتغير عندما يستعيد المستخدم نسخة احتياطية، أو يعيد تثبيت التطبيق، أو ينتقل إلى جهاز جديد. سجّل التطبيق دائمًا عند كل تشغيل وارفع أحدث رمز، مع استبدال الرمز القديم على الخادم.

// Best practice: register on each launch,
// always upload the freshly received token,
// never cache a token as permanent.
let rule = "re-register every launch"
_ = rule

التحقق من الإعدادات الحالية

قد يلغي المستخدم الإذن لاحقًا من الإعدادات. وقبل الاعتماد على الإشعارات، استعلم باستخدام getNotificationSettings لقراءة حالة التفويض الحالية والميزات المسموح بها.

import UserNotifications
func currentStatus() async -> UNAuthorizationStatus {
    let settings = await UNUserNotificationCenter
        .current().notificationSettings()
    return settings.authorizationStatus
}

التفويض المؤقت

يتيح الخيار .provisional وصول الإشعارات بهدوء إلى مركز الإشعارات دون عرض مطالبة مسبقة. وهذا مفيد للسماح للمستخدمين بتجربة الإشعارات قبل اتخاذ القرار، مع إمكانية الإبقاء عليها أو إيقافها.

import UserNotifications
func requestQuiet() async throws -> Bool {
    try await UNUserNotificationCenter.current()
        .requestAuthorization(
            options: [.alert, .sound, .provisional])
}

القدرة المطلوبة

لن يعمل أي من ذلك دون تفعيل قدرة Push Notifications في هدف Xcode، إذ يضيف ذلك استحقاق aps-environment. ولتوصيل الإشعارات في الخلفية، فعّل أيضًا قدرة Background Modes مع Remote notifications.

// Xcode target > Signing & Capabilities:
//   + Push Notifications
//   + Background Modes > Remote notifications
let caps = "entitlements required"
_ = caps

جمع خطوات التسجيل

مسار بدء تشغيل منظم: اطلب التفويض، وإذا مُنح، فسجّل التطبيق للإشعارات عن بُعد على main actor. ثم يصل الرمز في استدعاء المفوَّض لإرساله إلى الخادم.

import UIKit
import UserNotifications
func setupPush() async {
    let center = UNUserNotificationCenter.current()
    let granted = (try? await center.requestAuthorization(
        options: [.alert, .sound, .badge])) ?? false
    if granted {
        await MainActor.run {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

تحقق سريع

تذكّر العلاقة بين التفويض والتسجيل.

مراجعة

لقد تعلمتم كيفية التسجيل لتلقي الإشعارات الفورية:

  • استخدموا UNUserNotificationCenter لطلب الإذن الخاص بـ .alert/.sound/.badge.
  • الإذن والتسجيل عمليتان منفصلتان؛ استدعوا registerForRemoteNotifications() على الممثل الرئيسي.
  • حوّلوا رمز Data إلى تمثيل سداسي عشري وارفعوه؛ أعيدوا التسجيل عند كل تشغيل، لأن الرموز تتغير.
  • فعّلوا إمكانية Push Notifications، وفكروا في استخدام الإذن .provisional.

الأسئلة الشائعة

هل درس «التسجيل للإشعارات الفورية» مجاني؟

نعم — نص درس «التسجيل للإشعارات الفورية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «التسجيل للإشعارات الفورية»؟

اطلب الإذن واحصل على رمز الجهاز. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «التسجيل للإشعارات الفورية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التسجيل للإشعارات الفورية
  2. التعامل مع حمولات الإشعارات
  3. المهام والتحديثات في الخلفية
  4. إجراءات الإشعارات وفئاتها
← العودة إلى Swift Academy