Klaviyo Swift SDK ช่วยให้นักพัฒนาสามารถรวมการวิเคราะห์และฟังก์ชั่นการแจ้งเตือนของ Klaviyo ลงในแอปพลิเคชัน iOS ของพวกเขา SDK ช่วยในการระบุผู้ใช้และติดตามเหตุการณ์ผ่าน APIs ไคลเอนต์ Klaviyo เพื่อลดค่าใช้จ่ายด้านประสิทธิภาพคำขอ API จะถูกคิวและส่งเป็นแบทช์ คิวยังคงอยู่ในพื้นที่เก็บข้อมูลในพื้นที่เพื่อให้ข้อมูลไม่สูญหายหากอุปกรณ์ออฟไลน์หรือแอพถูกยกเลิก
เมื่อรวมเข้าด้วยกันแล้วทีมการตลาดของคุณจะสามารถเข้าใจความต้องการของผู้ใช้แอปของคุณได้ดีขึ้นและส่งข้อความที่ทันเวลาผ่าน APNS
เปิดใช้งานความสามารถในการแจ้งเตือนแบบพุชในโครงการ XCODE ของคุณ ส่วน "เปิดใช้งานความสามารถในการแจ้งเตือนแบบพุช" ในคู่มือนักพัฒนา Apple นี้ให้คำแนะนำโดยละเอียด
[ไม่บังคับ แต่แนะนำ] หากคุณตั้งใจจะใช้การแจ้งเตือนแบบพุชที่หลากหลายเพิ่มส่วนขยายบริการการแจ้งเตือนไปยังโครงการ XCode ของคุณ แอพพลิเคชั่นบริการแจ้งเตือนจะจัดส่งเป็นชุดข้อมูลแยกต่างหากภายในแอพ iOS ของคุณ เพื่อเพิ่มส่วนขยายนี้ลงในแอพของคุณ:
เป้าหมายการปรับใช้ของส่วนขยายบริการการแจ้งเตือนของคุณเริ่มต้นเป็นเวอร์ชัน iOS ล่าสุด หากสิ่งนี้เกินกว่าเวอร์ชัน iOS ที่รองรับขั้นต่ำของแอปของคุณการแจ้งเตือนแบบพุชอาจไม่แสดงสื่อที่แนบมาบนอุปกรณ์รุ่นเก่า เพื่อหลีกเลี่ยงสิ่งนี้ให้ตรวจสอบให้แน่ใจว่าเป้าหมายการปรับใช้ขั้นต่ำของส่วนขยายตรงกับแอปของคุณ
ขึ้นอยู่กับตัวจัดการการพึ่งพาที่คุณใช้ให้ทำตามคำแนะนำด้านล่างเพื่อติดตั้งการพึ่งพาของ Klaviyo
KlaviyoSwift สามารถใช้งานได้ผ่าน Swift Package Manager ทำตามขั้นตอนด้านล่างเพื่อติดตั้ง
https://github.com/klaviyo/klaviyo-swift-sdk
ในฟิลด์ข้อความ สิ่งนี้ควรนำแพ็คเกจขึ้นมาบนหน้าจอKlaviyoSwift
ให้กับเป้าหมายแอปของคุณและ KlaviyoSwiftExtension
ให้กับเป้าหมายการขยายบริการการแจ้งเตือน (ถ้าสร้างขึ้น) และคลิก เพิ่มแพ็คเกจKlaviyoswift มีให้บริการผ่าน Cocoapods
YourAppNotificationServiceExtenionTarget
YourAppTarget
ให้แน่ใจว่าได้แทนที่เป้าหมายของคุณและแอปของคุณ target 'YourAppTarget' do
pod 'KlaviyoSwift'
end
target 'YourAppNotificationServiceExtenionTarget' do
pod 'KlaviyoSwiftExtension'
end
pod install
เพื่อให้การรวมเสร็จสมบูรณ์ ห้องสมุดสามารถเก็บไว้ได้ทันสมัยผ่าน pod update KlaviyoSwift
และ pod update KlaviyoSwiftExtension
ในที่สุดในไฟล์ NotificationService.swift
เพิ่มรหัสสำหรับผู้ได้รับมอบหมายสองคนที่ต้องการจากไฟล์นี้ ตัวอย่างนี้ครอบคลุมการโทรเข้าสู่ Klaviyo เพื่อให้เราสามารถดาวน์โหลดและแนบสื่อกับการแจ้งเตือนแบบพุช
SDK จะต้องเริ่มต้นด้วยคีย์ API สาธารณะตัวอักษรและตัวเลขสั้นสำหรับบัญชี Klaviyo ของคุณหรือที่เรียกว่ารหัสเว็บไซต์ของคุณ
// AppDelegate
import KlaviyoSwift
class AppDelegate : UIResponder , UIApplicationDelegate {
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
KlaviyoSDK ( ) . initialize ( with : " YOUR_KLAVIYO_PUBLIC_API_KEY " )
return true
}
}
SDK ควร เริ่มต้นก่อนที่จะมีการเรียกใช้วิธี Klaviyo SDK อื่น ๆ
SDK มีวิธีการระบุผู้ใช้ของคุณเป็นโปรไฟล์ Klaviyo ผ่านทาง API โปรไฟล์ไคลเอนต์ โปรไฟล์สามารถระบุได้โดยการรวมกันของสิ่งต่อไปนี้:
ตัวระบุข้างต้นเหล่านี้ยังคงมีอยู่ในพื้นที่เก็บข้อมูลท้องถิ่นเพื่อให้ SDK สามารถติดตามผู้ใช้/โปรไฟล์ปัจจุบันสำหรับคุณเมื่อคุณร้องขอเหตุการณ์หรือต้องการตั้งค่าโทเค็น push ฯลฯ
ตัวระบุโปรไฟล์สามารถตั้งค่าทั้งหมดในครั้งเดียวหรือทีละราย ไม่ว่าจะด้วยวิธีใด SDK จะจัดกลุ่มและแบทช์ API เพื่อปรับปรุงประสิทธิภาพ
รหัสต่อไปนี้แสดงวิธีการตั้งค่าตัวระบุโปรไฟล์:
// organization, title, image, location and additional properties (dictionary) can also be set using the below constructor
let profile = Profile ( email : " [email protected] " , firstName : " Blob " , lastName : " Jr. " )
KlaviyoSDK ( ) . set ( profile : profile )
// or setting individual properties
KlaviyoSDK ( ) . set ( profileAttribute : . firstName , value : " Blob " )
KlaviyoSDK ( ) . set ( profileAttribute : . lastName , value : " Jr. " )
ในการเริ่มต้นโปรไฟล์ใหม่โดยสิ้นเชิง (เช่นหากผู้ใช้ออกจากระบบ) โทรหา KlaviyoSDK().resetProfile()
เพื่อล้างตัวระบุโปรไฟล์ที่ติดตามอยู่ในปัจจุบันหรือใช้ KlaviyoSDK().set(profile: profile)
เพื่อเขียนทับด้วยโปรไฟล์ใหม่ วัตถุ.
// start a profile for Blob Jr.
let profile = Profile ( email : " [email protected] " , firstName : " Blob " , lastName : " Jr. " )
KlaviyoSDK ( ) . set ( profile : profile )
// stop tracking Blob Jr.
KlaviyoSDK ( ) . resetProfile ( )
// start a profile for Robin Hood
let profile = Profile ( email : " [email protected] " , firstName : " Robin " , lastName : " Hood " )
KlaviyoSDK ( ) . set ( profile : profile )
Klaviyo จะติดตามผู้ใช้ที่ไม่ปรากฏชื่อด้วย ID autogenerated เมื่อใดก็ตามที่มีการตั้งค่าโทเค็นแบบพุชหรือมีการสร้างเหตุการณ์ ด้วยวิธีนี้คุณสามารถรวบรวมโทเค็นพุชและติดตามเหตุการณ์ก่อนที่จะรวบรวมตัวระบุโปรไฟล์เช่นอีเมลหรือหมายเลขโทรศัพท์ เมื่อมีตัวระบุ Klaviyo จะรวมผู้ใช้ที่ไม่ระบุชื่อเข้ากับผู้ใช้ที่ระบุ
SDK มีเครื่องมือสำหรับการติดตามเหตุการณ์ที่ผู้ใช้ดำเนินการบนแอพของคุณผ่านทาง Create Client Event API ด้านล่างเป็นตัวอย่างของวิธีการติดตามเหตุการณ์:
// using a predefined event name
let event = Event ( name : . StartedCheckoutMetric ,
properties : [
" name " : " cool t-shirt " ,
" color " : " blue " ,
" size " : " medium " ,
] ,
value : 166 )
KlaviyoSDK ( ) . create ( event : event )
// using a custom event name
let customEvent = Event ( name : . CustomEvent ( " Checkout Completed " ) ,
properties : [
" name " : " cool t-shirt " ,
" color " : " blue " ,
" size " : " medium " ,
] ,
value : 166 )
KlaviyoSDK ( ) . create ( event : customEvent )
วิธี create
ใช้วัตถุเหตุการณ์เป็นอาร์กิวเมนต์ เหตุการณ์สามารถสร้างด้วยอาร์กิวเมนต์ต่อไปนี้:
name
: ชื่อของเหตุการณ์ที่คุณต้องการติดตามเป็น enum EventName
รายการของตัวชี้วัดเหตุการณ์ที่กำหนดไว้ทั่วไปของ Klaviyo สามารถพบได้ใน Event.EventName
นอกจากนี้คุณยังสามารถสร้างเหตุการณ์ที่กำหนดเองได้โดยใช้ CustomEvent
enum Case of Event.EventName
properties
: พจนานุกรมคุณสมบัติที่เฉพาะเจาะจงกับเหตุการณ์ อาร์กิวเมนต์นี้เป็นทางเลือกvalue
: ค่าตัวเลข ( Double
) เพื่อเชื่อมโยงกับเหตุการณ์นี้ ตัวอย่างเช่นจำนวนเงินดอลลาร์ของการซื้อ ในการส่งการแจ้งเตือนแบบพุชไปยังผู้ใช้ของคุณคุณต้องรวบรวมโทเค็นพุชและลงทะเบียนกับ Klaviyo สิ่งนี้ทำผ่าน KlaviyoSDK().set(pushToken:)
ซึ่งลงทะเบียนโทเค็นและสถานะการอนุญาตปัจจุบันผ่านการสร้างไคลเอนต์ Push Token API
registerForRemoteNotifications()
เพื่อขอโทเค็นพุชจาก APNs โดยทั่วไปแล้วจะทำใน application:didFinishLaunchingWithOptions:
วิธีการของผู้แทนแอปของคุณapplication:didRegisterForRemoteNotificationsWithDeviceToken
ในแอปพลิเคชันของคุณผู้แทนเพื่อรับโทเค็นพุชจาก APNs และลงทะเบียนกับ Klaviyoด้านล่างนี้เป็นรหัสที่จะทำทั้งสองขั้นตอนข้างต้น:
import KlaviyoSwift
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
KlaviyoSDK ( ) . initialize ( with : " YOUR_KLAVIYO_PUBLIC_API_KEY " )
UIApplication . shared . registerForRemoteNotifications ( )
return true
}
func application ( _ application : UIApplication , didRegisterForRemoteNotificationsWithDeviceToken deviceToken : Data ) {
KlaviyoSDK ( ) . set ( pushToken : deviceToken )
}
เมื่อได้รับโทเค็นแบบพุชแล้วขั้นตอนต่อไปคือการขออนุญาตจากผู้ใช้ของคุณเพื่อส่งการแจ้งเตือนแบบพุช คุณสามารถเพิ่มรหัสคำขอสิทธิ์ได้ทุกที่ในแอปพลิเคชันของคุณซึ่งเหมาะสมที่จะแจ้งให้ผู้ใช้สำหรับการอนุญาตนี้ Apple ให้แนวทางบางประการเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับเวลาและวิธีการขออนุญาตนี้ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการร้องขอการอนุญาตแบบพุชภายใน application:didFinishLaunchingWithOptions:
วิธีการในไฟล์ตัวแทนแอปพลิเคชัน อย่างไรก็ตามเป็นที่น่าสังเกตว่านี่อาจไม่ใช่สถานที่ที่เหมาะเพราะมันอาจขัดจังหวะประสบการณ์การเริ่มต้นของแอป
หลังจากตั้งค่าโทเค็นแบบพุช Klaviyo SDK จะติดตามการเปลี่ยนแปลงการอนุญาตการแจ้งเตือนของผู้ใช้โดยอัตโนมัติเมื่อใดก็ตามที่แอปพลิเคชันเปิดหรือกลับมาทำงานต่อจากพื้นหลัง
ด้านล่างนี้เป็นรหัสตัวอย่างเพื่อขอสิทธิ์การแจ้งเตือนแบบพุช:
import UserNotifications
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
KlaviyoSDK ( ) . initialize ( with : " YOUR_KLAVIYO_PUBLIC_API_KEY " )
UIApplication . shared . registerForRemoteNotifications ( )
let center = UNUserNotificationCenter . current ( )
center . delegate = self as? UNUserNotificationCenterDelegate // the type casting can be removed once the delegate has been implemented
let options : UNAuthorizationOptions = [ . alert , . sound , . badge ]
// use the below options if you are interested in using provisional push notifications. Note that using this will not
// show the push notifications prompt to the user.
// let options: UNAuthorizationOptions = [.alert, .sound, .badge, .provisional]
center . requestAuthorization ( options : options ) { granted , error in
if let error = error {
// Handle the error here.
print ( " error = " , error )
}
// Irrespective of the authorization status call `registerForRemoteNotifications` here so that
// the `didRegisterForRemoteNotificationsWithDeviceToken` delegate is called. Doing this
// will make sure that Klaviyo always has the latest push authorization status.
DispatchQueue . main . async {
UIApplication . shared . registerForRemoteNotifications ( )
}
}
return true
}
เมื่อผู้ใช้แตะในการแจ้งเตือนแบบพุชให้ใช้ userNotificationCenter:didReceive:withCompletionHandler
และ userNotificationCenter:willPresent:withCompletionHandler
ในแอปพลิเคชันของคุณมอบหมายให้จัดการการรับการแจ้งเตือนเมื่อแอพอยู่ในพื้นหลังและเบื้องหน้าตามลำดับ
ด้านล่างนี้เป็นตัวอย่างของวิธีจัดการการแจ้งเตือนแบบพุชในผู้แทนแอปของคุณ:
// be sure to set the UNUserNotificationCenterDelegate to self in the didFinishLaunchingWithOptions method (refer the requesting push notification permission section above for more details on this)
extension AppDelegate : UNUserNotificationCenterDelegate {
// below method will be called when the user interacts with the push notification
func userNotificationCenter (
_ center : UNUserNotificationCenter ,
didReceive response : UNNotificationResponse ,
withCompletionHandler completionHandler : @escaping ( ) -> Void ) {
// If this notification is Klaviyo's notification we'll handle it
// else pass it on to the next push notification service to which it may belong
let handled = KlaviyoSDK ( ) . handle ( notificationResponse : response , withCompletionHandler : completionHandler )
if !handled {
completionHandler ( )
}
}
// below method is called when the app receives push notifications when the app is the foreground
func userNotificationCenter (
_ center : UNUserNotificationCenter ,
willPresent notification : UNNotification ,
withCompletionHandler completionHandler : @escaping ( UNNotificationPresentationOptions ) -> Void ) {
if #available ( iOS 14 . 0 , * ) {
completionHandler ( [ . list , . banner ] )
} else {
completionHandler ( [ . alert ] )
}
}
}
เมื่อติดตามการแจ้งเตือนแบบพุชที่เปิดขึ้นคุณยังสามารถลดจำนวนป้ายลงบนไอคอนแอพได้โดยการเพิ่มรหัสต่อไปนี้ลงใน userNotificationCenter:didReceive:withCompletionHandler
วิธี:
func userNotificationCenter (
_ center : UNUserNotificationCenter ,
didReceive response : UNNotificationResponse ,
withCompletionHandler completionHandler : @escaping ( ) -> Void ) {
// decrement the badge count on the app icon
if #available ( iOS 16 . 0 , * ) {
UNUserNotificationCenter . current ( ) . setBadgeCount ( UIApplication . shared . applicationIconBadgeNumber - 1 )
} else {
UIApplication . shared . applicationIconBadgeNumber -= 1
}
// If this notification is Klaviyo's notification we'll handle it
// else pass it on to the next push notification service to which it may belong
let handled = KlaviyoSDK ( ) . handle ( notificationResponse : response , withCompletionHandler : completionHandler )
if !handled {
completionHandler ( )
}
}
นอกจากนี้หากคุณเพียงแค่ต้องการรีเซ็ตจำนวนป้ายเป็นศูนย์เมื่อเปิดแอป (โปรดทราบว่าอาจมาจากผู้ใช้เพียงแค่เปิดแอพที่เป็นอิสระจากข้อความพุช) คุณสามารถเพิ่มรหัสต่อไปนี้ลงในเมธอด applicationDidBecomeActive
ใน ผู้แทนแอพ:
func applicationDidBecomeActive ( _ application : UIApplication ) {
// reset the badge count on the app icon
if #available ( iOS 16 . 0 , * ) {
UNUserNotificationCenter . current ( ) . setBadgeCount ( 0 )
} else {
UIApplication . shared . applicationIconBadgeNumber = 0
}
}
เมื่อการแจ้งเตือนการผลักดันครั้งแรกของคุณถูกส่งและเปิดคุณควรเริ่มเห็นตัวชี้วัด แบบพุชที่เปิดอยู่ ภายในแผงควบคุม Klaviyo ของคุณ
แอปของคุณต้องใช้เวอร์ชัน 1.7.2 อย่างน้อยที่สุดเพื่อให้ขั้นตอนด้านล่างทำงาน
ลิงก์ลึกช่วยให้คุณสามารถนำทางไปยังหน้าใดหน้าหนึ่งภายในแอปของคุณเพื่อตอบสนองต่อการเปิดการแจ้งเตือนผู้ใช้
คุณต้องกำหนดค่าลิงก์ลึกในแอปของคุณเพื่อให้พวกเขาทำงาน กระบวนการกำหนดค่าสำหรับ Klaviyo ไม่แตกต่างจากสิ่งที่จำเป็นสำหรับการจัดการการเชื่อมโยงอย่างลึกล้ำโดยทั่วไปดังนั้นคุณสามารถติดตามเอกสารของ Apple สำหรับการเชื่อมโยงอย่างลึกซึ้งร่วมกับขั้นตอนที่ระบุไว้ที่นี่
คุณมีสองตัวเลือกสำหรับการใช้ลิงก์ลึก: รูปแบบ URL และลิงก์สากล
แผนการ URL เป็นวิธีดั้งเดิมและง่ายกว่าในการเชื่อมโยงลึกจากการแจ้งเตือนแบบพุชไปยังแอพของคุณ อย่างไรก็ตามลิงค์เหล่านี้จะใช้ได้เฉพาะในกรณีที่แอพมือถือของคุณติดตั้งบนอุปกรณ์และจะไม่เข้าใจโดยเว็บเบราว์เซอร์หากตัวอย่างเช่นคุณต้องการเชื่อมโยงจากอีเมลไปยังแอพของคุณ
เพื่อให้ Apple กำหนดเส้นทางลิงก์ลึกไปยังแอปพลิเคชันของคุณคุณต้องลงทะเบียนโครงการ URL ในไฟล์ info.plist ของแอปพลิเคชัน สิ่งนี้สามารถทำได้โดยใช้ตัวแก้ไขที่ XCode จัดเตรียมจากแท็บข้อมูลของการตั้งค่าโครงการของคุณหรือโดยการแก้ไข info.plist โดยตรง
ฟิลด์ที่ต้องการมีดังต่อไปนี้:
ในการแก้ไข info.plist โดยตรงเพียงกรอกรายละเอียดเฉพาะแอปของคุณและวางสิ่งนี้ใน plist ของคุณ
< key >CFBundleURLTypes</ key >
< array >
< dict >
< key >CFBundleTypeRole</ key >
< string >Editor</ string >
< key >CFBundleURLName</ key >
< string >{your_unique_identifier}</ string >
< key >CFBundleURLSchemes</ key >
< array >
< string >{your_URL_scheme}</ string >
</ array >
</ dict >
</ array >
เนื่องจาก iOS 9 Apple ได้รับคำสั่งว่าแผนการ URL ที่แอปของคุณสามารถเปิดได้จำเป็นต้องอยู่ในรายการใน info.plist นี่คือนอกเหนือจากขั้นตอนที่ 1 ด้านบน แม้ว่าแอพของคุณจะไม่เปิดแอพอื่น ๆ คุณยังต้องแสดงรายการโครงการ URL ของแอปเพื่อเชื่อมโยงการทำงานอย่างลึกซึ้ง
สิ่งนี้จะต้องทำใน info.plist โดยตรง:
< key >LSApplicationQueriesSchemes</ key >
< array >
< string >{your custom URL scheme}</ string >
</ array >
ขั้นตอนที่ 1 และ 2 เปิดใช้งานแอปของคุณเพื่อรับลิงก์ลึก แต่คุณต้องจัดการลิงค์เหล่านี้ภายในแอปของคุณ สิ่งนี้ทำได้โดยการใช้ application:openURL:options:
วิธีการในตัวแทนแอปของคุณ
ตัวอย่าง:
func application (
_ app : UIApplication ,
open url : URL ,
options : [ UIApplication . OpenURLOptionsKey : Any ] = [ : ]
) -> Bool {
guard let components = NSURLComponents ( url : url , resolvingAgainstBaseURL : true )
else {
print ( " Invalid deep linking URL " )
return false
}
print ( " components: ( components . debugDescription ) " )
return true
}
หากคุณใช้ Swiftui คุณสามารถใช้ onOpenURL(perform:)
เป็นตัวดัดแปลงมุมมองในมุมมองที่คุณตั้งใจจะจัดการลิงค์ลึก นี่อาจเป็นรากฐานของฉากของคุณหรือไม่
ตัวอย่าง:
@ main
struct MyApplication : App {
var body : some Scene {
WindowGroup {
ContentView ( )
. onOpenURL { url in
// handle the URL that must be opened
}
}
}
}
ในที่สุดเรามีแอพตัวอย่าง ( Examples/KlaviyoSwiftExamples
) ใน repo sdk ที่คุณสามารถอ้างอิงเพื่อรับตัวอย่างของวิธีการใช้ลิงก์ลึกในแอปของคุณ
เมื่อขั้นตอนข้างต้นเสร็จสมบูรณ์คุณสามารถส่งการแจ้งเตือนแบบพุชจากตัวแก้ไขผลัก Klaviyo ภายในเว็บไซต์ Klaviyo ที่นี่คุณสามารถสร้างและส่งการแจ้งเตือนผ่าน Klaviyo เพื่อให้แน่ใจว่า URL แสดงในตัวจัดการที่คุณใช้ในขั้นตอนที่ 3
นอกจากนี้คุณยังสามารถเรียกใช้ลิงก์ลึกเพื่อให้แน่ใจว่ารหัสของคุณทำงานโดยใช้คำสั่งด้านล่างในเทอร์มินัล
xcrun simctl openurl booted {your_URL_here}
การเชื่อมโยงสากลเป็นวิธีที่ทันสมัยกว่าในการจัดการลิงก์ลึกและแนะนำโดย Apple พวกเขามีความปลอดภัยมากขึ้นและมอบประสบการณ์การใช้งานที่ดีขึ้น อย่างไรก็ตามแตกต่างจากรูปแบบ URL ที่พวกเขาต้องการการตั้งค่าเพิ่มขึ้นอีกเล็กน้อยที่เน้นในเอกสาร Apple เหล่านี้
เมื่อคุณมีการตั้งค่าจากเอกสารของ Apple ในสถานที่แล้วคุณจะต้องแก้ไขการติดตามแบบเปิดแบบพุชตามที่อธิบายไว้ด้านล่าง:
extension AppDelegate : UNUserNotificationCenterDelegate {
func userNotificationCenter ( _ center : UNUserNotificationCenter , didReceive response : UNNotificationResponse , withCompletionHandler completionHandler : @escaping ( ) -> Void ) {
let handled = KlaviyoSDK ( ) . handle ( notificationResponse : response , withCompletionHandler : completionHandler ) { url in
print ( " deep link is " , url )
}
if !handled {
// not a klaviyo notification should be handled by other app code
}
}
}
โปรดทราบว่าตัวจัดการ Deep Link จะถูกเรียกกลับมาที่เธรดหลัก หากคุณต้องการจัดการโครงการ URL นอกเหนือจากลิงก์สากลที่คุณใช้ตามที่อธิบายไว้ในตัวเลือก 1: โครงการ URL
การแจ้งเตือนแบบพุชที่หลากหลายได้รับการสนับสนุนใน SDK เวอร์ชัน 2.2.0 และสูงกว่า
Rich Push คือความสามารถในการเพิ่มรูปภาพเพื่อส่งข้อความแจ้งเตือน เมื่อขั้นตอนในส่วนการติดตั้งเสร็จสมบูรณ์คุณควรมีส่วนขยายบริการแจ้งเตือนในการตั้งค่าโครงการของคุณด้วยรหัสจาก KlaviyoSwiftExtension
ด้านล่างนี้เป็นคำแนะนำเกี่ยวกับวิธีการทดสอบการแจ้งเตือนแบบพุชที่หลากหลาย
{
"aps" : {
"alert" : {
"title" : " Free apple vision pro " ,
"body" : " Free Apple vision pro when you buy a Klaviyo subscription. "
},
"mutable-content" : 1
},
"rich-media" : " https://www.apple.com/v/apple-vision-pro/a/images/overview/hero/portrait_base__bwsgtdddcl7m_large.jpg " ,
"rich-media-type" : " jpg "
}
didRegisterForRemoteNotificationsWithDeviceToken
ด้วยวิธีการที่มีการพัฒนาใน AppDelegate
เมื่อคุณมีสามสิ่งเหล่านี้คุณสามารถใช้เครื่องทดสอบการแจ้งเตือนแบบพุชและส่งการแจ้งเตือนแบบพุชในท้องถิ่นเพื่อให้แน่ใจว่าทุกอย่างถูกตั้งค่าอย่างถูกต้อง
การรองรับ Sandbox มีอยู่ใน SDK เวอร์ชัน 2.2.0 และสูงกว่า
Apple มีสองสภาพแวดล้อมที่มีการสนับสนุนการแจ้งเตือนแบบพุช - การผลิตและแซนด์บ็อกซ์ สภาพแวดล้อมการผลิตรองรับการส่งการแจ้งเตือนแบบพุชไปยังผู้ใช้จริงเมื่อแอปถูกเผยแพร่ใน App Store หรือ TestFlight ในทางตรงกันข้ามแอปพลิเคชัน Sandbox ที่สนับสนุนการแจ้งเตือนแบบพุชคือที่ลงนามด้วยใบรับรองการพัฒนา iOS แทนที่จะเป็นใบรับรองการกระจาย iOS Sandbox ทำหน้าที่เป็นสภาพแวดล้อมการจัดเตรียมทำให้คุณสามารถทดสอบแอปพลิเคชันของคุณในสภาพแวดล้อมที่คล้ายกับ แต่แตกต่างจากการผลิตโดยไม่ต้องกังวลเกี่ยวกับการส่งข้อความไปยังผู้ใช้จริง
SDK ของเรารองรับการใช้ Sandbox เพื่อผลักดันเช่นกัน SDK ของ Klaviyo จะกำหนดและเก็บสภาพแวดล้อมที่โทเค็นผลักดันของคุณเป็นของและสื่อสารกับแบ็กเอนด์ของเราทำให้โทเค็นของคุณเส้นทางส่งไปยังสภาพแวดล้อมที่ถูกต้อง ไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติม ตราบใดที่คุณได้ปรับใช้แอปพลิเคชันของคุณไปยัง Sandbox ด้วย SDK ของเราที่ใช้ในการส่งโทเค็นแบบพุชไปยังแบ็กเอนด์ของเราความสามารถในการส่งและรับพุชในแอปพลิเคชัน Sandbox เหล่านี้ควรทำงานนอกกรอบ
เริ่มต้นด้วยเวอร์ชัน 1.7.0 SDK จะแคชข้อมูลที่เข้ามาและล้างกลับไปที่ Klaviyo API ในช่วงเวลาหนึ่ง ช่วงเวลานั้นขึ้นอยู่กับลิงค์เครือข่ายที่ใช้งานอยู่ในปัจจุบันโดยแอป ตารางด้านล่างแสดงช่วงเวลาการล้างที่ใช้สำหรับการเชื่อมต่อแต่ละประเภท:
เครือข่าย | ช่วงเวลา |
---|---|
wwan/wifi | 10 วินาที |
เซลล์ | 30 วินาที |
การกำหนดการเชื่อมต่อขึ้นอยู่กับการแจ้งเตือนจากบริการการเข้าถึงของเรา เมื่อไม่มีเครือข่าย SDK จะแคชข้อมูลจนกว่าเครือข่ายจะพร้อมใช้งานอีกครั้ง ข้อมูลทั้งหมดที่ส่งโดย SDK ควรมีให้ในไม่ช้าหลังจากที่ SDK ถูกล้างออก
SDK จะลองคำขอ API ที่ล้มเหลวภายใต้เงื่อนไขบางประการ ตัวอย่างเช่นหากการหมดเวลาเครือข่ายเกิดขึ้นคำขอจะถูกนำกลับมาใช้ใหม่ในช่วงเวลาการล้างครั้งต่อไป นอกจากนี้หาก SDK ได้รับข้อผิดพลาดการ จำกัด อัตรา 429
จาก Klaviyo API มันจะใช้ backoff แบบเอ็กซ์โปเนนเชียลกับ Jitter เพื่อลองคำขอต่อไปอีกครั้ง
ดูคู่มือการสนับสนุนเพื่อเรียนรู้วิธีการมีส่วนร่วมใน Klaviyo Swift SDK เรายินดีต้อนรับความคิดเห็นของคุณในส่วนปัญหาของที่เก็บ GitHub สาธารณะของเรา
Klaviyoswift มีให้บริการภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม