You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NEAppPushProvider未被调用,iOS本地推送配置问题求助

NEAppPushProvider未激活、未被调用问题排查建议

已完成的前置操作

  • 配置应用使用本地推送通知
  • 获取Apple权限授权
  • 为SimplePush应用和SimplePushProvider创建含网络扩展的证书,两者加入同一Group ID

主应用配置代码

let pushManager = NEAppPushManager()
pushManager.matchSSIDs = ["Tenda_6B8340","ouamassi", "Tenda_6B8340_5G", "192.168.1.7"]
pushManager.localizedDescription = "PushProvider"
pushManager.providerBundleIdentifier = "" // 此处填写我创建的SimplePushProvider的应用ID
pushManager.delegate = self
pushManager.isEnabled = true
pushManager.providerConfiguration = [
  "host": "192.168.1.7"    // 这是运行服务器的Mac的IP地址  
]
pushManager.saveToPreferences(completionHandler: { error in
  print("error? \(error)")
  print("is active: \(pushManager.isActive)")
})

SimplePushProvider代码片段

class SimplePushProvider: NEAppPushProvider {
  private let channel = BaseChannel(port: Port.notification, heartbeatTimeout: 
.seconds(30), logger: Logger(prependString: "Notification Channel", subsystem: 
.networking))
  private var cancellables = Set<AnyCancellable>()
  private let logger = Logger(prependString: "SimplePushProvider", subsystem: .general)
public override init() {
  super.init()
}

public override func start() {
  logger.log("Started")
  …. 
}

当前问题

SimplePushProvider始终未被调用,pushManager始终处于未激活状态。已确认真机连接到matchSSIDs中的SSID,尝试多个SSID仍无效,保存NEAppPushManager时无错误。

排查建议

  1. 补全providerBundleIdentifier
    确保providerBundleIdentifier填写SimplePushProvider的完整Bundle ID(例如com.xxx.SimplePushProvider),该字段是主应用与扩展通信的核心标识,不能为空。

  2. 校验Capabilities配置

  • 主应用和Push Provider扩展必须同时开启App Push capability,且Group ID完全一致。
  • 检查扩展的Info.plist,确认NSExtension -> NSExtensionAttributes下没有与代码中matchSSIDs冲突的配置(代码配置优先级更高,但需避免冗余错误)。
  1. 检查设备端配置状态
    前往设备设置->VPN与设备管理,确认你的App Push配置已被启用。部分情况下,保存配置后需要手动激活,或等待系统同步生效。

  2. 验证签名与证书

  • 主应用和扩展的签名证书必须包含网络扩展权限(即对应配置了App Push的Provisioning Profile)。
  • 在Xcode的Signing & Capabilities面板中,确认主应用与扩展的Team一致,Provisioning Profile选择正确。
  1. 日志追踪
  • 在start()方法中添加更明确的日志输出,通过Xcode的Devices窗口查看扩展进程的实时日志。
  • 搜索系统日志中的NEAppPush相关条目,可能会找到扩展未激活的具体原因。
  1. 修正SSID配置
    移除matchSSIDs中的无效条目"192.168.1.7"(SSID是无线网络名称,不是IP地址),同时确保设备连接的SSID与列表中的字符串完全匹配(注意大小写、空格等细节)。

  2. 确认环境兼容性

  • 确保测试设备系统版本为iOS 14.0及以上(App Push扩展的最低支持版本)。
  • 确认已获取用户的通知权限授权,可通过UNUserNotificationCenter检查权限状态。

内容的提问来源于stack exchange,提问作者tamtoum1987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:57:48