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
130
points
59
downloads

Publisher

unverified uploader

Weekly Downloads

iOS only plugin for handling APNs and system push notifications.

Repository (GitHub)

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