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

iOS only plugin for handling APNs and system push notifications.

example/lib/main.dart

import 'dart:convert';

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();

  @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 = '获取系统版本失败');
    }
  }

  /// 初始化推送
  Future<void> initPushService() async {
    // 开启日志
    IosPushPlugin.enableLog(true);

    // 设置回调
    IosPushPlugin.setOnRegId((id) {
      setState(() => _regId = id);
      debugPrint('✅ onRegId 回调: $id');
    });

    IosPushPlugin.setOnError((err) {
      debugPrint('❌ onError 回调: $err');
    });

    IosPushPlugin.setOnClickNotification((data) {
      debugPrint('🔔 通知点击: $data');
      setState(() => _lastMessage = jsonEncode(data));
    });

    // 初始化推送服务
    final result = await IosPushPlugin.initPush();
    debugPrint('🚀 initPush 结果: $result');
    setState(() => _isInit = true);
  }

  @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
0
points
32
downloads

Publisher

unverified uploader

Weekly Downloads

iOS only plugin for handling APNs and system push notifications.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on ios_push_plugin

Packages that implement ios_push_plugin