iOS SDK 常见问题
iOS 集成常见问题解答
Anchor link to问:如何将 Pushwoosh SDK 安装到我的 iOS 项目中?
Anchor link to您可以使用 Swift Package Manager 或 CocoaPods 集成 Pushwoosh SDK。
问:如何使用 Swift Package Manager 安装 Pushwoosh SDK?
Anchor link to在 Xcode 中,导航至 Package Dependencies 部分,并使用以下 URL 添加包:https://github.com/Pushwoosh/Pushwoosh-XCFramework。
问:如何使用 CocoaPods 安装 Pushwoosh SDK?
Anchor link to打开您项目的 Podfile 并添加行 pod 'PushwooshXCFramework'。然后,在终端中运行命令 pod install。
问:我需要向我的项目添加哪些功能才能启用推送通知?
Anchor link to在您项目设置的 Signing & Capabilities 部分,您需要添加 Push Notifications 和 Background Modes 功能。添加 Background Modes 时,请确保勾选 Remote notifications 复选框。
问:时效性通知需要哪些额外功能?
Anchor link to如果您打算使用时效性通知 (iOS 15+),您还需要添加 Time Sensitive Notifications 功能。
问:我需要在哪里添加 Pushwoosh 初始化代码?
Anchor link to初始化代码需要添加到您的 AppDelegate 类中。
问:在 SwiftUI 的 AppDelegate 中我应该添加什么初始化代码?
Anchor link to请参阅在 SwiftUI 项目中集成 Pushwoosh 的 Swift 代码示例。
问:在标准的 Swift AppDelegate 中我应该添加什么初始化代码?
Anchor link to请参阅在标准 Swift 项目中集成 Pushwoosh 的 Swift 代码示例。
问:在 Objective-C AppDelegate 中我应该添加什么初始化代码?
Anchor link to请参阅在 Objective-C 项目中集成 Pushwoosh 的 Objective-C 代码示例。
问:我需要向我的 Info.plist 文件添加哪些键?
Anchor link to您需要在应用的 Info.plist 文件中添加 Pushwoosh_APPID 键(设置为您的 Application Code)和 PW_API_TOKEN 键(设置为您的 API Token)。
问:消息送达跟踪的目的是什么?
Anchor link toPushwoosh 支持使用 Notification Service Extension 跟踪推送通知的送达事件。
问:如何向我的项目添加 Notification Service Extension?
Anchor link to在 Xcode 中,前往 File > New > Target…,选择 Notification Service Extension,然后按 Next。输入目标名称并按 Finish。当提示激活时,按 Cancel。
问:如何将 Pushwoosh SDK 添加到 Notification Service Extension?
Anchor link to将提供的 Swift 或 Objective-C 代码片段添加到您的 Notification Service Extension 的主 .swift 或 .m 文件中。此代码利用 PWNotificationExtensionManager 来处理通知请求。
问:App Groups 的目的是什么?
Anchor link to需要 App Groups 功能以允许 Notification Service Extension 与主应用程序通信。
问:如何为我的主目标和 Notification Service Extension 启用 App Groups?
Anchor link to对于这两个目标,前往 Signing & Capabilities,添加 App Groups 功能,然后按 + 按钮创建一个新组。确保组名以 group. 开头,并为两个目标使用相同的组名。
问:我需要为主目标的 Info.plist 添加哪些键以用于 App Groups?
Anchor link to在您的主目标的 Info.plist 中,添加 PW_APP_GROUPS_NAME 键并将其值设置为您的 App Groups 组的名称。
问:我需要为我的 Notification Service Extension 的 Info.plist 添加哪些键?
Anchor link to在您的 Notification Service Extension 的 Info.plist 中,添加 PW_APP_GROUPS_NAME 键(设置为您的 App Groups 名称)和 Pushwoosh_APPID 键(设置为您的 Application Code)。
问:如何验证 Pushwoosh 集成?
Anchor link to构建并运行您的项目后,前往 Pushwoosh 控制面板并向您的应用程序发送一条推送通知。您应该会在您的设备上看到该通知。
问:Pushwoosh SDK 中用于处理推送通知的两个主要回调是什么?
Anchor link to两个主要的回调是 onMessageReceived 和 onMessageOpened。
问:onMessageReceived 回调何时被调用?
Anchor link to当应用程序收到推送通知时,会调用 onMessageReceived 方法。
问:onMessageOpened 回调何时被调用?
Anchor link to当用户与推送通知交互并打开它时,会调用 onMessageOpened 方法。
问:如何访问已接收或已打开的推送通知的 payload?
Anchor link to可以通过 PWMessage 对象(传递给 onMessageReceived 和 onMessageOpened 回调)的 payload 属性来访问其 payload。
问:如何在 Pushwoosh 中设置用户 ID?
Anchor link to使用 Pushwoosh.sharedInstance() 对象的 setUserId(_:) 方法,将用户 ID 作为参数传递。
问:如何在 Pushwoosh 中设置用户的电子邮件地址?
Anchor link to使用 Pushwoosh.sharedInstance() 对象的 setEmail(_:) 方法,提供用户的电子邮件。
如何在 Pushwoosh 中将其他用户信息设置为标签?
Anchor link to使用 Pushwoosh.sharedInstance() 对象的 setTags(_:) 方法,传递一个字典,其中键是标签名,值是相应的标签值。
如何跟踪具有附加属性的用户事件?
Anchor link to使用 PWInAppManager.shared() 的 postEvent(_:withAttributes:) 方法,提供事件名称(例如 "login")和属性字典(例如 "name"、"last_login")。
问:如何跟踪包含产品详情的用户购买事件?
Anchor link to使用 PWInAppManager.shared() 的 postEvent(_:withAttributes:) 方法,事件名称为 "purchase",并附带一个包含产品详情(如 "product_id"、"product_name"、"price" 和 "quantity")的字典。
问:如何设置一个 delegate 来处理富媒体的呈现?
Anchor link to在您的视图控制器或其他适当的类中,遵循 PWRichMediaPresentingDelegate 协议,并将 PWRichMediaManager.shared() 的 delegate 属性设置为您的遵循实例。
问:如何配置富媒体的呈现样式?
Anchor link to使用 PWModalWindowConfiguration.shared() 对象来配置属性,如模态窗口位置,并使用 configureModalWindow(with:present:dismiss:) 方法配置呈现/消失动画。
问:在富媒体 delegate 方法中我可以访问哪些信息?
Anchor link todelegate 方法提供了对 PWRichMedia 对象的访问,该对象包含有关富媒体内容的信息,包括其 pushPayload。presentingDidFailForRichMedia:withError: 方法还提供了一个描述失败的 Error 对象。
问题排查
Anchor link to问:“Your provisioning profile does not have APS entry” 错误
Anchor link to如果您看到 “Your provisioning profile does not have APS entry.” 错误消息,请确保您的 provisioning profile 与推送兼容,并且其中包含值为 production 或 development 的 aps-environment 字符串。最简单的检查方法是在任何文本编辑器中打开移动 provisioning profile,并查找 aps-environment 字符串。它应该在那里。
如果它存在,而您仍然收到错误,这意味着 XCode 仍然选择了“不兼容推送”的 profile。请确保您使用正确的 profile 进行签名——有时如果您有同一个 App ID 的两个 profile,XCode 会搞混并使用旧的进行签名。
推荐的步骤是:
- 移除 所有 XCode profile;
- 添加唯一的新 profile;
- 重新构建应用。
问:iOS push token 和 hwid 是什么样的?
Anchor link toiOS 设备的 push token 是包含 64 个十六进制符号的字符串。Push token 示例:
03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f
请确保您在 API 请求中针对特定设备时使用的 iOS push token 是小写的。
Pushwoosh 使用 IDFV 作为设备 HWID。请注意,如果用户重新安装来自特定供应商的所有应用,它可能会更改。
CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93
问:当我的应用运行时,如何开关横幅?
Anchor link to默认情况下,我们最新的 iOS SDK 会在应用在前台运行时显示通知横幅。
您可以通过更改 Info.plist 中的以下标志来控制此行为:
标志 Pushwoosh_ALERT_TYPE – 字符串类型,值为:
BANNER– 默认值,显示横幅应用内提醒ALERT– 提醒通知NONE– 应用在前台时不显示通知
问:如何获取我的 iOS 设备 push token 以在测试设备中使用?
Anchor link to要获取您的 iOS 设备 push token,
- 打开 Xcode => Devices & Simulators;
- 将测试设备连接到您的电脑;
- 在左侧设备列表中选择您连接的设备;
- 点击 Open Console 按钮。

启动您需要设备 push token 的应用程序,并在 “Registered for push notifications” 行中找到您的 64 个十六进制字符的设备 push token:

问:为什么在卸载应用并在短时间内重新安装后,角标没有被清除?
Anchor link to这是预期的行为——角标由 iOS 本身处理,其值存储在应用程序首选项中,当您卸载应用时,这些首选项不会立即被移除。在立即重新安装的情况下,角标值会保留一段时间,导致应用重新安装后显示相同的角标。