Flutter教程iOS极光推送实现

在Flutter中集成极光推送时,iOS端始终无法收到推送通知。按照官方文档配置了AppKey、推送证书,并在Xcode中开启了Push Notification能力,但测试时设备收不到任何推送。具体表现为:

  1. 在极光后台显示推送成功,但iOS设备无提示
  2. 已确认证书环境(Development/Sandbox)与App运行环境匹配
  3. 尝试过重新生成Provisioning Profile,问题依旧

是否需要额外配置Flutter端代码?或是iOS项目中的Capabilities设置存在遗漏?请求有经验的开发者分享完整可用的配置流程。

3 回复

要实现Flutter中iOS的极光推送,首先确保你的项目已集成极光推送插件(如jpush_flutter)。以下是步骤:

  1. 配置App ID:在Apple开发者中心创建App ID,并启用Push Notifications服务。
  2. 生成推送证书:创建APNs推送证书并下载,导入到Keychain Access中导出为.p12文件。
  3. 配置Xcode:在Xcode项目中设置Bundle Identifier与App ID匹配,在Capabilities中开启Push Notifications和Background Modes。
  4. 上传证书至极光:登录极光官网,添加应用并上传APNs生产证书。
  5. 初始化SDK:在AppDelegate中调用[JPUSHService setupWithOption:launchOptions]初始化极光SDK。
  6. 获取设备Token:监听application:didRegisterForRemoteNotificationsWithDeviceToken:方法,将deviceToken传给极光。
  7. 处理推送:重写application:didReceiveRemoteNotification:接收推送内容。

确保在真机上测试,沙盒环境只支持实际设备。记得处理权限请求和网络状态。

更多关于Flutter教程iOS极光推送实现的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


首先确保已配置好Flutter项目环境。

  1. 添加依赖:在pubspec.yaml中添加firebase_messaging,并安装依赖。
  2. iOS配置
    • 在苹果开发者网站创建应用并获取APNs证书。
    • 将证书导入到项目中的Keychain Access,并导出为.p12文件。
    • 在Xcode中配置证书和描述文件。
    • 安装极光推送插件,填写App Key等信息。
  3. 初始化
    • 在AppDelegate.m中配置极光推送代理,并调用[JPUSHService setupWithOption:launchOptions]初始化。
  4. 请求权限
    • 调用FirebaseMessaging.instance.requestPermission()获取推送权限。
  5. 注册设备
    • 使用JPUSHService.registerDeviceToken()注册设备。
  6. 接收消息
    • 实现jpushNotificationCenter:didReceiveNotificationResponse:方法处理通知。
  7. 测试推送
    • 登录极光推送平台,发送测试推送消息,验证是否能正常接收。

完成后测试运行,确保推送功能正常工作。如果遇到问题,检查日志和配置是否正确。

Flutter iOS极光推送实现教程

准备工作

  1. 在极光官网注册账号并创建应用
  2. 获取AppKey和Master Secret

实现步骤

1. 添加依赖

pubspec.yaml中添加极光推送插件:

dependencies:
  jpush_flutter: ^2.3.4

2. iOS配置

  1. Info.plist中添加:
<key>CFBundleIdentifier</key>
<string>你的Bundle ID</string>
  1. AppDelegate.swift中配置:
import UIKit
import Flutter
import JPUSHService

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    // 初始化极光推送
    let entity = JPUSHRegisterEntity()
    entity.types = Int(JPAuthorizationOptions.alert.rawValue | 
                      JPAuthorizationOptions.badge.rawValue | 
                      JPAuthorizationOptions.sound.rawValue)
    JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self)
    
    // 设置极光AppKey
    JPUSHService.setup(withOption: launchOptions, 
                      appKey: "你的AppKey",
                      channel: "App Store",
                      apsForProduction: false)
    
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
    
  override func application(
    _ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
  ) {
    JPUSHService.registerDeviceToken(deviceToken)
    super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
  }
}

3. Flutter代码实现

import 'package:jpush_flutter/jpush_flutter.dart';

JPush jpush = JPush();

// 初始化
void initJPush() async {
  jpush.setup(
    appKey: "你的AppKey",
    channel: "developer-default",
    production: false,
    debug: true,
  );
  
  // 获取注册ID
  jpush.getRegistrationID().then((rid) {
    print("Registration ID: $rid");
  });

  // 监听消息
  jpush.addEventHandler(
    onReceiveMessage: (Map<String, dynamic> message) async {
      print("收到自定义消息: $message");
    },
    onOpenNotification: (Map<String, dynamic> message) async {
      print("点击通知打开应用: $message");
    },
    onReceiveNotification: (Map<String, dynamic> message) async {
      print("收到通知: $message");
    },
  );
}

// 调用初始化
initJPush();

测试推送

  1. 在极光控制台创建推送
  2. 选择iOS平台
  3. 填写推送内容并发送

这样你就完成了Flutter在iOS平台上的极光推送集成。记得在测试阶段将apsForProductionproduction设为false,上线后再改为true。

回到顶部