ส่งข้อความทดสอบไปยังแอป Apple ในพื้นหลัง

ในการเริ่มต้นใช้งาน FCM ให้สร้างกรณีการใช้งานที่เรียบง่ายที่สุด นั่นคือการส่ง ทดสอบข้อความแจ้งเตือนจาก การเขียนการแจ้งเตือนไปยังอุปกรณ์การพัฒนา เมื่อแอปอยู่ในเบื้องหลังบนอุปกรณ์ หน้านี้จะแสดงขั้นตอนทั้งหมดในการดำเนินการ ตั้งแต่การตั้งค่าไปจนถึงการยืนยัน ซึ่งอาจครอบคลุมถึงขั้นตอนที่คุณทำไปแล้ว หากคุณ ตั้งค่าแอปไคลเอ็นต์ของ Apple แล้ว สำหรับ FCM

เพิ่ม Firebase ลงในโปรเจ็กต์ Apple

ส่วนนี้ครอบคลุมงานที่คุณอาจทำเสร็จแล้วหากเปิดใช้แล้ว ฟีเจอร์อื่นๆ ของ Firebase สำหรับแอป สำหรับ FCM โดยเฉพาะ คุณจะ จำเป็นต้อง อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs และ ลงทะเบียนสำหรับการแจ้งเตือนระยะไกล

ข้อกำหนดเบื้องต้น

  • ติดตั้งสิ่งต่อไปนี้

    • Xcode 14.1 ขึ้นไป
  • ตรวจสอบว่าโปรเจ็กต์เป็นไปตามข้อกำหนดต่อไปนี้

    • โปรเจ็กต์ของคุณต้องกำหนดเป้าหมายเวอร์ชันแพลตฟอร์มต่อไปนี้หรือเวอร์ชันที่ใหม่กว่า
      • iOS 11
      • macOS 10.13
      • TVOS 12
      • WatchOS 6
  • ตั้งค่าอุปกรณ์ Apple จริงเพื่อเรียกใช้แอป แล้วทำงานต่อไปนี้ให้เสร็จ

    • รับคีย์การตรวจสอบสิทธิ์ข้อความ Push ของ Apple สำหรับ บัญชีนักพัฒนาแอป Apple
    • เปิดใช้ข้อความ Push ใน XCode ในส่วน App > ความสามารถ

หากยังไม่มีโปรเจ็กต์ Xcode และต้องการลองใช้ Firebase คุณสามารถดาวน์โหลดตัวอย่างการเริ่มต้นอย่างรวดเร็วของเราได้

สร้างโปรเจ็กต์ Firebase

คุณต้องสร้าง Firebase ก่อนจึงจะเพิ่ม Firebase ลงในแอป Apple ได้ เพื่อเชื่อมต่อกับแอปของคุณ ไปที่เว็บไซต์ ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ โปรเจ็กต์ Firebase

ลงทะเบียนแอปด้วย Firebase

หากต้องการใช้ Firebase ในแอป Apple คุณต้องลงทะเบียนแอปด้วย โปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปของคุณไปยัง

  1. ไปที่คอนโซล Firebase

  2. ที่ตรงกลางของหน้าภาพรวมโปรเจ็กต์ ให้คลิกไอคอน iOS+ เพื่อเปิดเวิร์กโฟลว์การตั้งค่า

    หากคุณเพิ่มแอปลงในโปรเจ็กต์ Firebase แล้ว ให้คลิกเพิ่มแอป เพื่อแสดงตัวเลือกแพลตฟอร์ม

  3. ป้อนรหัสชุดของแอปในช่องรหัสแพ็กเกจ

  4. (ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ชื่อเล่นแอปและรหัส App Store

  5. คลิกลงทะเบียนแอป

เพิ่มไฟล์การกำหนดค่า Firebase

  1. คลิก Download GoogleService-Info.plist เพื่อรับ Firebase Apple ไฟล์การกำหนดค่าแพลตฟอร์ม (GoogleService-Info.plist)

  2. ย้ายไฟล์การกำหนดค่าลงในรูทของโปรเจ็กต์ Xcode หากได้รับข้อความแจ้ง เลือกเพื่อเพิ่มไฟล์การกำหนดค่าไปยังเป้าหมายทั้งหมด

หากมีรหัสชุดหลายรายการในโปรเจ็กต์ คุณต้องเชื่อมโยงแพ็กเกจแต่ละรายการ รหัสด้วยแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมี ของตัวเอง GoogleService-Info.plist ไฟล์

เพิ่ม Firebase SDK ลงในแอป

ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase

  1. เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
  2. เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Firebase ของ Apple ดังนี้
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. เลือกไลบรารี Firebase Cloud Messaging
  5. เพิ่มแฟล็ก -ObjC ลงในส่วนแฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย
  6. หากต้องการสัมผัสประสบการณ์การใช้งาน Firebase Cloud Messaging ที่ดีที่สุด เราขอแนะนำ การเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอป คุณสามารถ ให้เลือกไลบรารีที่ไม่มีการรวบรวม IDFA หรือมีคอลเล็กชัน IDFA
  7. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ปัญหาและดาวน์โหลด ทรัพยากร Dependency ในเบื้องหลัง

อัปโหลดคีย์การตรวจสอบสิทธิ์ APNs

อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ไปยัง Firebase หากคุณยังไม่มีคีย์การตรวจสอบสิทธิ์ APNs โปรดสร้างคีย์ใน Apple Developer Member Center

  1. ภายในโปรเจ็กต์ในคอนโซล Firebase ให้เลือก ไอคอนรูปเฟือง, เลือก การตั้งค่าโปรเจ็กต์ แล้วเลือก Cloud Messaging

  2. ในคีย์การตรวจสอบสิทธิ์ AAP ในส่วนการกำหนดค่าแอป iOS ให้คลิกอัปโหลด

  3. เรียกดูตำแหน่งที่คุณบันทึกกุญแจไว้ จากนั้นเลือกคีย์แล้วคลิก เปิด เพิ่มรหัสคีย์สำหรับคีย์ (มีอยู่ใน Apple Developer Member Center) แล้วคลิก อัปโหลด

เริ่มต้น Firebase ในแอป

คุณจะต้องเพิ่มโค้ดการเริ่มต้น Firebase ลงในแอปพลิเคชัน นำเข้า โมดูล Firebase และกำหนดค่าอินสแตนซ์ที่แชร์ตามที่แสดงด้านล่าง

  1. นำเข้าโมดูล FirebaseCore ใน UIApplicationDelegate และอื่นๆ โมดูล Firebase ที่ผู้รับมอบสิทธิ์แอปใช้ เช่น วิธีใช้ Cloud Firestore และ Authentication มีดังนี้

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. กําหนดค่า FirebaseApp อินสแตนซ์ที่แชร์ใน เมธอด application(_:didFinishLaunchingWithOptions:):

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. หากใช้ SwiftUI คุณต้องสร้างการมอบสิทธิ์แอปพลิเคชันและแนบการมอบสิทธิ์ ไปยังโครงสร้าง App ของคุณผ่าน UIApplicationDelegateAdaptor หรือ NSApplicationDelegateAdaptor คุณต้องปิดใช้ SWizzing ที่มอบสิทธิ์ของแอปด้วย สำหรับ สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีการของ SwiftUI

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

ลงทะเบียนรับการแจ้งเตือนจากระยะไกล

ไม่ว่าจะตอนเริ่มต้นหรือ ณ จุดที่ต้องการในขั้นตอนการทำงานของแอปพลิเคชัน ลงทะเบียนแอปสำหรับการแจ้งเตือนระยะไกล โทร registerForRemoteNotificationsตามที่แสดง:

Swift


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Objective-C


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

เข้าถึงโทเค็นการจดทะเบียน

หากต้องการส่งข้อความไปยังอุปกรณ์ที่ต้องการ คุณต้องทราบหมายเลขของอุปกรณ์ โทเค็นการลงทะเบียน เนื่องจากคุณจะต้องป้อนโทเค็นในช่องในคอลัมน์ เครื่องมือเขียนการแจ้งเตือน ในการจบบทแนะนำนี้ อย่าลืมคัดลอกโทเค็น หรือจัดเก็บไว้อย่างปลอดภัยหลังจากที่คุณเรียกคืน

โดยค่าเริ่มต้น FCM SDK จะสร้าง โทเค็นการลงทะเบียนสำหรับอินสแตนซ์แอปไคลเอ็นต์เมื่อเปิดแอป โทเค็นนี้ช่วยให้คุณสามารถส่งการแจ้งเตือนที่กำหนดเป้าหมายได้เช่นเดียวกับโทเค็นอุปกรณ์ APNs อินสแตนซ์ที่เจาะจงของแอป

เช่นเดียวกับที่แพลตฟอร์ม Apple มักนำส่งโทเค็นอุปกรณ์ APN เมื่อเริ่มต้นแอป FCM จะให้โทเค็นการลงทะเบียนผ่าน FIRMessagingDelegate messaging:didReceiveRegistrationToken: วิธี FCM SDK จะเรียกโทเค็นใหม่หรือโทเค็นที่มีอยู่ระหว่างการเปิดตัวแอปครั้งแรกและ ทุกครั้งที่มีการอัปเดตหรือทำให้โทเค็นใช้งานไม่ได้ ในทุกกรณี FCM SDK จะเรียก messaging:didReceiveRegistrationToken: ด้วยโทเค็นที่ถูกต้อง

โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงในกรณีต่อไปนี้

  • แอปได้รับการกู้คืนในอุปกรณ์เครื่องใหม่
  • ผู้ใช้ถอนการติดตั้ง/ติดตั้งแอปอีกครั้ง
  • ผู้ใช้ล้างข้อมูลแอป

ตั้งค่าผู้รับมอบสิทธิ์การรับส่งข้อความ

หากต้องการรับโทเค็นการลงทะเบียน ให้ใช้ผู้รับมอบสิทธิ์การรับส่งข้อความ และตั้งค่าพร็อพเพอร์ตี้ delegate ของ FIRMessaging หลังจากการเรียก [FIRApp configure] ตัวอย่างเช่น หากผู้รับมอบสิทธิ์แอปพลิเคชันของคุณสอดคล้องกับผู้รับมอบสิทธิ์การรับส่งข้อความ คุณสามารถกำหนดผู้รับมอบสิทธิ์ได้ใน application:didFinishLaunchingWithOptions: ได้ด้วยตัวเอง

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

กำลังดึงข้อมูลโทเค็นการลงทะเบียนปัจจุบัน

ระบบจะส่งโทเค็นการลงทะเบียนผ่านวิธีการ messaging:didReceiveRegistrationToken: โดยทั่วไประบบจะเรียกเมธอดนี้ 1 ครั้งต่อ แอปเริ่มต้นด้วยโทเค็นการลงทะเบียน เมื่อมีการเรียกวิธีการนี้ เวลาที่เหมาะสมคือ:

  • หากโทเค็นการลงทะเบียนเป็นรายการใหม่ ให้ส่งไปยังแอปพลิเคชันเซิร์ฟเวอร์ของคุณ
  • สมัครใช้บริการโทเค็นการลงทะเบียนสำหรับหัวข้อต่างๆ จำเป็นต้องระบุสำหรับ การสมัครใช้บริการใหม่หรือกรณีที่ผู้ใช้ติดตั้งแอปอีกครั้ง

คุณสามารถเรียกโทเค็นได้โดยตรงโดยใช้ token(การเติมข้อความ:) ระบบจะแสดงข้อผิดพลาดที่ไม่เป็นค่าว่างหากเรียกโทเค็นไม่สำเร็จ

Swift

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

คุณสามารถใช้วิธีการนี้ได้ทุกเมื่อเพื่อเข้าถึงโทเค็นแทนการจัดเก็บ ได้

ตรวจสอบการรีเฟรชโทเค็น

หากต้องการรับการแจ้งเตือนเมื่อมีการอัปเดตโทเค็น ให้ระบุผู้รับมอบสิทธิ์ที่สอดคล้องกับ ลงในโปรโตคอลการมอบสิทธิ์การรับส่งข้อความ ตัวอย่างต่อไปนี้ลงทะเบียน และเพิ่มวิธีผู้รับมอบสิทธิ์ที่เหมาะสม

Swift

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("FCMToken"),
    object: nil,
    userInfo: dataDict
  )
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Objective-C

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

หรือคุณจะฟัง NSNotification ที่ชื่อ วันที่ kFIRMessagingRegistrationTokenRefreshNotification แทนที่จะเตรียมวิธีการของตัวแทน พร็อพเพอร์ตี้โทเค็นจะมีค่า ค่าโทเค็นปัจจุบัน

ส่งข้อความแจ้งเตือน

  1. ติดตั้งและเรียกใช้แอปในอุปกรณ์เป้าหมาย คุณจะต้องมีสิ่งต่อไปนี้ในอุปกรณ์ Apple เพื่อยอมรับคำขอสิทธิ์เพื่อรับการแจ้งเตือนจากระยะไกล

  2. ตรวจสอบว่าแอปอยู่ในเบื้องหลังของอุปกรณ์

  3. เปิดหน้าการรับส่งข้อความในคอนโซล Firebase

  4. หากนี่เป็นข้อความแรก ให้เลือกสร้างรายการแรก แคมเปญ

    1. เลือกข้อความแจ้งเตือน Firebase แล้วเลือกสร้าง
  5. หรือเลือกแคมเปญใหม่ในแท็บแคมเปญ แล้วคลิกการแจ้งเตือน

  6. ป้อนข้อความที่ต้องการ ส่วนช่องอื่นๆ ทั้งหมดไม่บังคับ

  7. เลือกส่งข้อความทดสอบจากแผงด้านขวา

  8. ในช่องที่ติดป้ายกำกับเพิ่มโทเค็นการจดทะเบียน FCM ให้ป้อนการจดทะเบียน โทเค็นที่คุณได้รับในส่วนก่อนหน้าของคู่มือนี้

  9. เลือกทดสอบ

หลังจากเลือกทดสอบแล้ว อุปกรณ์ของลูกค้าเป้าหมาย (ที่มีแอปใน พื้นหลัง) จะได้รับการแจ้งเตือน

ดูข้อมูลเชิงลึกเกี่ยวกับการส่งข้อความไปที่แอปได้ที่ แดชบอร์ดการรายงาน FCM ซึ่งบันทึก จำนวนข้อความที่ส่งและเปิดบนอุปกรณ์ Apple และ Android พร้อมกับ ข้อมูลสำหรับ "การแสดงผล" (การแจ้งเตือนที่ผู้ใช้เห็น) สำหรับแอป Android

ขั้นตอนถัดไป

นอกเหนือข้อความแจ้งเตือน และเพิ่มการทำงานขั้นสูงอื่นๆ ให้กับ โปรดดูที่