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

คู่มือการผสานรวมขั้นสูงสำหรับ iOS SDK 7.0+

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

Background modes

Anchor link to

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

ขั้นตอนการเปิดใช้งาน 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 ได้ในขณะที่ทำงานในเบื้องหลัง

Foreground modes

Anchor link to

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

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

// Set false to disable foreground notifications, true to enable it
Pushwoosh.configure.showPushnotificationAlert = true

ระดับการบันทึก (Log level)

Anchor link to

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

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

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

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

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

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

Pushwoosh.Debug.setLogLevel(.PW_LL_DEBUG)

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

Custom UNNotificationCenterDelegate

Anchor link to

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

Pushwoosh.configure.addNotificationCenterDelegate(my_delegate)

จากนั้น implement เมธอด UNNotificationCenterDelegate ใน delegate ของคุณ:

func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
if (!PWMessage.isPushwooshMessage(notification.request.content.userInfo)) {
// Handle your notification
completionHandler(UNNotificationPresentationOptions.alert)
}
}
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
if (!PWMessage.isPushwooshMessage(response.notification.request.content.userInfo)) {
// Handle your notification
completionHandler()
}
}

Pushwoosh Lazy Initialization

Anchor link to

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

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

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

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

กรณีการใช้งาน (Use Cases)

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

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

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

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

Anchor link to
คุณสมบัติ (Property)คำอธิบาย (Description)ค่าที่เป็นไปได้ (Possible Values)
Pushwoosh_APPIDตั้งค่า Pushwoosh application ID สำหรับ production buildXXXXX-XXXXX
ประเภท: String
Pushwoosh_APPID_Devตั้งค่า Pushwoosh application ID สำหรับ development buildXXXXX-XXXXX
ประเภท: String
Pushwoosh_SHOW_ALERTแสดงการแจ้งเตือนในเบื้องหน้า (foreground 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 push จะถูกประมวลผลโดยอัตโนมัติ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: