ios_push_plugin 0.1.1 copy "ios_push_plugin: ^0.1.1" to clipboard
ios_push_plugin: ^0.1.1 copied to clipboard

PlatformiOS

iOS only plugin for handling APNs and system push notifications.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:ios_push_plugin/ios_push_plugin.dart';

void main() {
  runApp(const MyApp());
}

/// 示例应用入口
class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

/// 示例逻辑实现
class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  String _regId = '未注册';
  String _lastMessage = '无推送消息';
  bool _isInit = false;

  final _iosPushPlugin = IosPushPlugin.instance;

  @override
  void initState() {
    super.initState();
    initPlatformState();
    initPushService();
  }

  /// 获取系统版本号
  Future<void> initPlatformState() async {
    try {
      final version = await _iosPushPlugin.getPlatformVersion();
      if (!mounted) return;
      setState(() => _platformVersion = version ?? 'Unknown');
    } on PlatformException {
      setState(() => _platformVersion = '获取系统版本失败');
    }
  }

  /// 初始化推送
  /// 初始化 iOS 推送服务
  Future<void> initPushService() async {
    try {
      // 开启日志
      IosPushPlugin.instance.enableLog(true);
      debugPrint('📢 [IosPush] 日志已启用');

      // 请求权限
      final granted = await IosPushPlugin.instance.requestPermission();
      if (!granted) {
        debugPrint('⚠️ [IosPush] 用户拒绝通知权限');
        return;
      }

      // 初始化推送
      await IosPushPlugin.instance.initPush();
      final regId = await IosPushPlugin.instance.register();
      debugPrint('注册设备 token: $regId');

      // 监听消息
      IosPushPlugin.instance.onMessage.listen((event) {
        debugPrint('📩 收到推送消息: $event');
      });

      setState(() => _isInit = true);
    } catch (e, s) {
      debugPrint('❌ [IosPush] 初始化失败: $e');
      debugPrintStack(stackTrace: s);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'iOS Push Plugin Example',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('iOS Push Plugin Demo'),
          centerTitle: true,
        ),
        body: ListView(
          padding: const EdgeInsets.all(20),
          children: [
            _buildSection(
              title: '📱 平台信息',
              child: Text('运行在: $_platformVersion'),
            ),
            _buildSection(
              title: '🔑 注册信息',
              child: Text(
                _isInit ? 'RegId: $_regId' : '尚未初始化推送服务 (initPush 未调用)',
              ),
            ),
            _buildSection(title: '📩 最新推送消息', child: Text(_lastMessage)),
            const SizedBox(height: 30),
            ElevatedButton(
              onPressed: initPushService,
              child: const Text('重新初始化推送'),
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildSection({required String title, required Widget child}) {
    return Card(
      elevation: 2,
      margin: const EdgeInsets.symmetric(vertical: 10),
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
      child: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              title,
              style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
            ),
            const SizedBox(height: 8),
            child,
          ],
        ),
      ),
    );
  }
}
1
likes
140
points
32
downloads

Publisher

unverified uploader

Weekly Downloads

iOS only plugin for handling APNs and system push notifications.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on ios_push_plugin

Packages that implement ios_push_plugin