ข้ามไปยังเนื้อหา

คู่มือการผสานรวม iOS SDK ขั้นสูง

ส่วนนี้ให้ข้อมูลเกี่ยวกับการผสานรวม Pushwoosh iOS SDK ในขั้นสูง

โหมดพื้นหลัง

Anchor link to

เพื่อเปิดใช้งานฟังก์ชันนี้ คุณต้องเพิ่ม Background Modes ในโปรเจกต์ของคุณ

ขั้นตอนการเปิดใช้งานโหมดพื้นหลัง

Anchor link to
  1. เปิดโปรเจกต์ของคุณใน Xcode และเลือกใน Project Navigator
  2. เลือก target ของแอปของคุณจากแผงด้านซ้าย
  3. ไปที่แท็บ Signing & Capabilities
  4. คลิกปุ่ม + Capability ที่มุมบนซ้าย
  5. ค้นหาและเลือก Background Modes จากรายการ
  6. ในส่วน Background Modes ให้เปิดใช้งาน Remote notifications โดยการติ๊กช่อง

เมื่อเสร็จสิ้น แอปของคุณจะสามารถจัดการ push notifications รวมถึง silent push notifications ได้ในขณะที่ทำงานในพื้นหลัง

โหมดเบื้องหน้า

Anchor link to

โดยค่าเริ่มต้น Pushwoosh iOS SDK จะแสดงแบนเนอร์การแจ้งเตือนเมื่อแอปทำงานในเบื้องหน้า

คุณสามารถควบคุมพฤติกรรมนี้ได้โดยการตั้งค่าแฟล็กบูลีนต่อไปนี้ในโค้ดของคุณ (เช่น ใน AppDelegate ของคุณ):

// ตั้งค่าเป็น false เพื่อปิดการแจ้งเตือนในเบื้องหน้า, true เพื่อเปิดใช้งาน
Pushwoosh.sharedInstance().showPushnotificationAlert = true

ระดับการบันทึก

Anchor link to

Pushwoosh iOS SDK รองรับระดับการบันทึกต่อไปนี้:

  • NONE - ไม่มีบันทึกจาก SDK
  • ERROR - แสดงเฉพาะข้อความข้อผิดพลาดในคอนโซล
  • WARNING - แสดงคำเตือนเพิ่มเติมจากข้อผิดพลาด
  • INFO - รวมถึงข้อความข้อมูล (การตั้งค่าเริ่มต้น)
  • DEBUG - รวมถึงข้อมูลการดีบักอย่างละเอียด

โดยค่าเริ่มต้น ระดับการบันทึกถูกตั้งค่าเป็น INFO เพื่อให้แน่ใจว่า SDK ให้ข้อมูลที่เกี่ยวข้องโดยไม่ทำให้คอนโซลของนักพัฒนาซอฟต์แวร์รก

หากต้องการแก้ไขระดับการบันทึก ให้อัปเดตคีย์ Pushwoosh_LOG_LEVEL ในไฟล์ Info.plist ของแอปของคุณ:

<key>Pushwoosh_LOG_LEVEL</key>
<string>YOUR_LOG_LEVEL</string>

หรือคุณสามารถเปลี่ยนระดับการบันทึกโดยใช้โค้ดด้านล่าง:

Pushwoosh.Debug.setLogLevel(.PW_LL_DEBUG)

แทนที่ YOUR_LOG_LEVEL ด้วยระดับที่ต้องการ (เช่น DEBUG หรือ ERROR)

UNNotificationCenterDelegate แบบกำหนดเอง

Anchor link to

หากคุณต้องการใช้ UNNotificationCenterDelegate ของคุณเอง (ตัวอย่างเช่น สำหรับการแจ้งเตือนในเครื่อง) คุณควรแจ้ง Pushwoosh SDK เกี่ยวกับเรื่องนี้เพื่อให้ทำงานได้อย่างถูกต้อง คุณสามารถทำได้ด้วยคุณสมบัติ notificationCenterDelegateProxy ของอินสแตนซ์ Pushwoosh:

Pushwoosh.sharedInstance().notificationCenterDelegateProxy?.add(my_delegate)

จากนั้น ให้ใช้วิธีการ UNNotificationCenterDelegate ใน delegate ของคุณ:

func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
if (!PWMessage.isPushwooshMessage(notification.request.content.userInfo)) {
// จัดการการแจ้งเตือนของคุณ
completionHandler(UNNotificationPresentationOptions.alert)
}
}
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
if (!PWMessage.isPushwooshMessage(response.notification.request.content.userInfo)) {
// จัดการการแจ้งเตือนของคุณ
completionHandler()
}
}

การเริ่มต้น Pushwoosh แบบ Lazy

Anchor link to

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

เมื่อเปิดใช้งานแฟล็กนี้ Pushwoosh SDK จะไม่เริ่มบริการจนกว่าจะมีการเรียกใช้วิธีการของ Pushwoosh iOS SDK อย่างชัดเจน

เพิ่มรายการต่อไปนี้ใน Info.plist:

<key>Pushwoosh_LAZY_INITIALIZATION</key>
<true/>

กรณีการใช้งาน

  1. การเริ่มต้น SDK ที่ควบคุมได้ – แฟล็ก Pushwoosh_LAZY_INITIALIZATION ช่วยให้สามารถชะลอการเริ่มต้น Pushwoosh SDK ซึ่งให้การควบคุมเวลาที่บริการ push จะเปิดใช้งานได้มากขึ้น

  2. การเปิดใช้งาน Push ที่รอการตัดบัญชี – ในบางแอปพลิเคชัน การแจ้งเตือนแบบ push ควรเริ่มต้นภายใต้เงื่อนไขที่เฉพาะเจาะจงเท่านั้น การเปิดใช้งานแฟล็กนี้ช่วยให้แน่ใจว่า Pushwoosh SDK จะเริ่มทำงานเมื่อมีการร้องขออย่างชัดเจนเท่านั้น

  3. การกำหนดค่า Push เฉพาะผู้ใช้ – บางแอปพลิเคชันอาจต้องการปรับแต่งการตั้งค่าการแจ้งเตือนแบบ push ตามความต้องการของผู้ใช้หรือการตั้งค่าบัญชี ด้วยการเริ่มต้นแบบ lazy Pushwoosh SDK จะเริ่มทำงานหลังจากกำหนดค่าที่เหมาะสมแล้วเท่านั้น

รายการคุณสมบัติทั้งหมดของ Info.plist

Anchor link to
คุณสมบัติคำอธิบายค่าที่เป็นไปได้
Pushwoosh_APPIDตั้งค่า Pushwoosh application ID สำหรับบิลด์ที่ใช้งานจริงXXXXX-XXXXX
ประเภท: String
Pushwoosh_APPID_Devตั้งค่า Pushwoosh application ID สำหรับบิลด์เพื่อการพัฒนาXXXXX-XXXXX
ประเภท: String
Pushwoosh_SHOW_ALERTแสดงการแจ้งเตือนในเบื้องหน้าYES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALERT_TYPEตั้งค่ารูปแบบการแจ้งเตือนBANNER (ค่าเริ่มต้น) / ALERT / NONE
ประเภท: String
Pushwoosh_BASEURLแทนที่ URL พื้นฐานของเซิร์ฟเวอร์ Pushwooshhttps://cp.pushwoosh.com/json/1.3/ (ค่าเริ่มต้น)
ประเภท: String
Pushwoosh_AUTO_ACCEPT_DEEP_LINK_FOR_SILENT_PUSHหากเป็น YES, Deep Links ที่ได้รับใน silent pushes จะถูกประมวลผลโดยอัตโนมัติYES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_SERVER_COMMUNICATIONอนุญาตให้ SDK ส่งคำขอเครือข่ายไปยังเซิร์ฟเวอร์ PushwooshYES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_COLLECTING_DEVICE_DATAอนุญาตให้ SDK รวบรวมและส่งข้อมูลอุปกรณ์ (เวอร์ชัน OS, locale และรุ่น) ไปยังเซิร์ฟเวอร์YES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_COLLECTING_DEVICE_OS_VERSIONอนุญาตให้ SDK รวบรวมและส่งเวอร์ชัน OS ของอุปกรณ์ไปยังเซิร์ฟเวอร์YES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_COLLECTING_DEVICE_LOCALEอนุญาตให้ SDK รวบรวมและส่ง locale ของอุปกรณ์ไปยังเซิร์ฟเวอร์YES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_COLLECTING_DEVICE_MODELอนุญาตให้ SDK รวบรวมและส่งรุ่นของอุปกรณ์ไปยังเซิร์ฟเวอร์YES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_ALLOW_COLLECTING_SCREEN_NAMEอนุญาตให้ SDK แนบชื่อหน้าจอปัจจุบันไปกับเหตุการณ์ PW_ScreenOpen, PW_UserIdle และ PW_ApplicationExitYES (ค่าเริ่มต้น) / NO
ประเภท: Boolean
Pushwoosh_LOG_LEVELระดับการบันทึกของ Pushwoosh SDK สำหรับรายละเอียด โปรดดูที่ การควบคุมระดับการบันทึกNONE / ERROR / WARNING / INFO (ค่าเริ่มต้น) / DEBUG / VERBOSE
ประเภท: String
Pushwoosh_PURCHASE_TRACKING_ENABLEDอนุญาตให้ SDK ติดตามการซื้อในแอป จำเป็นสำหรับ Customer Journey BuilderYES / NO (ค่าเริ่มต้น)
ประเภท: Boolean

บนแพลตฟอร์มที่ไม่สามารถแก้ไข Info.plist ได้ (Cordova, OutSystems) ให้ใช้โค้ดที่เทียบเท่ากันในรันไทม์แทน: Pushwoosh.configure.setAllowCollectingScreenName: