Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

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

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

เพิ่ม Firebase ในโปรเจ็กต์ iOS ของคุณ

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

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

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

    • Xcode 11.0 หรือใหม่กว่า
    • CocoaPods 1.4.0 หรือใหม่กว่า
  • ตรวจสอบให้แน่ใจว่าโครงการของคุณตรงตามข้อกำหนดเหล่านี้:

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

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

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

สร้างโครงการ Firebase

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

ลงทะเบียนแอปของคุณกับ Firebase

หลังจากที่คุณมีโปรเจ็กต์ Firebase คุณสามารถเพิ่มแอป iOS ของคุณลงไปได้

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

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

  2. ตรงกลางหน้าภาพรวมโครงการคลิกไอคอน iOS ( ) เพื่อเปิดเวิร์กโฟลว์การตั้งค่า

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

  3. ป้อนรหัสบันเดิลของแอปของคุณในช่อง รหัสชุด iOS

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

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

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

  1. คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่า Firebase iOS ของคุณ ( GoogleService-Info.plist )

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

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

เพิ่ม Firebase SDK ลงในแอปของคุณ

ขอแนะนำให้ใช้ CocoaPods เพื่อติดตั้งไลบรารี Firebase อย่างไรก็ตามหากคุณไม่ต้องการใช้ CocoaPods คุณสามารถ รวมเฟรมเวิร์ก SDK ได้โดยตรง หรือใช้ Swift Package Manager เบต้า

คุณใช้หนึ่งใน ตัวอย่างการเริ่มต้นอย่างรวดเร็ว หรือไม่ มีโครงการ Xcode และ Podfile (พร้อมพ็อด) อยู่แล้ว แต่คุณยังต้อง เพิ่มไฟล์การกำหนดค่า Firebase และ ติดตั้ง พ็อด

  1. สร้าง Podfile หากคุณยังไม่มี:

    cd your-project-directory
    pod init
  2. ใน Podfile ของคุณให้เพิ่ม Firebase pods ที่คุณต้องการใช้ในแอปของคุณ

    คุณสามารถเพิ่ม ผลิตภัณฑ์ Firebase ที่รองรับ ลงในแอป iOS ของคุณได้

    เพื่อประสบการณ์ที่ดีที่สุดกับ Firebase Cloud Messaging เราขอแนะนำให้ เปิดใช้ Google Analytics ในโครงการของคุณ นอกจากนี้ในการตั้งค่า Analytics คุณต้องเพิ่ม Firebase SDK สำหรับ Analytics ลงในแอปของคุณ

    เปิดใช้งานการวิเคราะห์

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    # Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'

    ไม่ได้เปิดใช้งานการวิเคราะห์

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. ติดตั้ง .xcworkspace จากนั้นเปิดไฟล์. .xcworkspace เพื่อดูโปรเจ็กต์ใน Xcode:

    pod install
    open your-project.xcworkspace

อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณ

อัปโหลดคีย์การตรวจสอบสิทธิ์ APN ของคุณไปยัง Firebase หากคุณยังไม่มีคีย์การตรวจสอบสิทธิ์ APN โปรดดูการ กำหนดค่า APN ด้วย FCM

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

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

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

เริ่มต้น Firebase ในแอปของคุณ

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

  1. นำเข้าโมดูล Firebase ใน UIApplicationDelegate ของคุณ:

    รวดเร็ว

    import Firebase

    วัตถุประสงค์ -C

    @import Firebase;
  2. กำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp โดยทั่วไปในแอปพลิเคชันของแอปของคุณ application:didFinishLaunchingWithOptions: method:

    รวดเร็ว

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

    วัตถุประสงค์ -C

    // Use Firebase library to configure APIs
    [FIRApp configure];

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

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

รวดเร็ว

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: {_, _ in })
} else {
  let settings: UIUserNotificationSettings =
  UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

วัตถุประสงค์ -C

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

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

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

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

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

โทเค็นการลงทะเบียนอาจเปลี่ยนแปลงเมื่อ:

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

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

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

รวดเร็ว

Messaging.messaging().delegate = self

วัตถุประสงค์ -C

[FIRMessaging messaging].delegate = self;

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

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

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

คุณสามารถดึงโทเค็นได้โดยตรงโดยใช้ instanceIDWithHandler: การเรียกกลับนี้จัดเตรียม InstanceIDResult ซึ่งมีโทเค็น มีการระบุข้อผิดพลาดที่ไม่เป็นค่าว่างหากการเรียกข้อมูล InstanceID ล้มเหลวไม่ว่าด้วยวิธีใดก็ตาม

รวดเร็ว

InstanceID.instanceID().instanceID { (result, error) in
  if let error = error {
    print("Error fetching remote instance ID: \(error)")
  } else if let result = result {
    print("Remote instance ID token: \(result.token)")
    self.instanceIDTokenMessage.text  = "Remote InstanceID token: \(result.token)"
  }
}

วัตถุประสงค์ -C

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching remote instance ID: %@", error);
  } else {
    NSLog(@"Remote instance ID token: %@", result.token);
    NSString* message =
      [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
    self.instanceIDTokenMessage.text = message;
  }
}];

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

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

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

รวดเร็ว

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
  print("Firebase registration token: \(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.
}

วัตถุประสงค์ -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. ติดตั้งและเรียกใช้แอปบนอุปกรณ์เป้าหมาย คุณจะต้องยอมรับคำขออนุญาตเพื่อรับการแจ้งเตือนระยะไกล

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

  3. เปิดตัว เรียบเรียงการแจ้งเตือน และเลือกการ แจ้งเตือนใหม่

  4. ป้อนข้อความ

  5. เลือก ส่งข้อความทดสอบ

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

  7. คลิก ทดสอบ

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

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

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

หากต้องการก้าวไปไกลกว่าข้อความแจ้งเตือนและเพิ่มพฤติกรรมขั้นสูงอื่น ๆ ให้กับแอปของคุณโปรดดู: