การติดตั้งใช้งาน iOS

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

ตั้งค่าทรัพยากร Dependency ของ CocoaPods

รหัสอินสแตนซ์ใช้ CocoaPods ในการติดตั้งและ จัดการทรัพยากร Dependency เปิดหน้าต่างเทอร์มินัลและไปที่ตำแหน่งของโปรเจ็กต์ Xcode สำหรับแอปพลิเคชัน หากยังไม่ได้สร้าง Podfile สำหรับแอปพลิเคชัน ให้สร้างเลยตอนนี้โดยทำดังนี้

pod init

เปิด Podfile ที่สร้างขึ้นสำหรับแอปพลิเคชัน แล้วเพิ่มโค้ดต่อไปนี้

pod 'FirebaseInstanceId'

บันทึกไฟล์และเรียกใช้คำสั่งต่อไปนี้

pod install

การดำเนินการนี้จะสร้างไฟล์ .xcworkspace ให้กับแอปพลิเคชัน ใช้ไฟล์นี้ในการพัฒนาทั้งหมดที่จะเกิดขึ้นในอนาคตสำหรับแอปพลิเคชัน

สร้างโทเค็น

การสร้างโทเค็นต้องใช้รหัสโปรเจ็กต์ที่สร้างโดย Google Developers Console

NSString *authorizedEntity = PROJECT_ID;
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
NSDictionary *options = @{
  @"apns_token" : <APNS Token data>,
  // 1 if APNS sandbox token else 0
  @"apns_sandbox" : @(1),
};
[[FIRInstanceID instanceID] tokenWithAuthorizedEntity:authorizedEntity
                                                scope:scope
                                              options:options
                                              handler:
                  ^(NSString * _Nullable token, NSError * _Nullable error) {
                      // ...
}];

จัดการโทเค็นและรหัสอินสแตนซ์

รหัสอินสแตนซ์ช่วยให้คุณลบและรีเฟรชโทเค็นได้

ลบโทเค็นและรหัสอินสแตนซ์

NSString *authorizedEntity = PROJECT_ID; // Project ID
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
FIRInstanceIDDeleteTokenHandler handler = ^void(NSError *error) {
  if (error) {
    // Failed to delete the token. Check error and do an exponential
    // backoff to retry again.
  } else {
    // Successfully deleted the token.
  }
};
[[FIRInstanceID instanceID]
    deleteTokenWithAuthorizedEntity:authorizedEntity
                              scope:scope
                            handler:handler];

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

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
      if error != nil {
        NSLog(@"Error deleting instance ID: %@", error);
      }
    }];

รีเฟรชโทเค็น

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

[[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(tokenRefreshNotification:) 
         name:kFIRInstanceIDTokenRefreshNotification object:nil];

ต้องสร้าง Observer นี้ก่อนที่จะสร้างโทเค็น เช่น ก่อนเรียก [FIRApp configure] คุณสามารถดึงโทเค็นล่าสุดได้โดยเรียก [[FIRInstanceID instanceID] token]

โปรดทราบว่าสำหรับการสังเกตการสร้างโทเค็นสำหรับ Cloud Messaging จะมี Delegate เฉพาะ ให้ใช้งาน