Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
flutter_push
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
顾海波
2025-02-19 13:50:52 +0800
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
6d96c41e1db18507f796923b416442d8aef175a0
6d96c41e
2 parents
9ddf24e5
8f5a0d9f
Merge remote-tracking branch 'origin/master'
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
12 deletions
ios/Classes/FlutterPushPlugin.swift
ios/Classes/FlutterPushPlugin.swift
View file @
6d96c41
import
Flutter
import
UIKit
import
UserNotifications
@objc(FlutterPushPlugin)
public
class
FlutterPushPlugin
:
NSObject
,
FlutterPlugin
{
public
static
func
register
(
with
registrar
:
FlutterPluginRegistrar
)
{
let
channel
=
FlutterMethodChannel
(
name
:
"flutter_push"
,
binaryMessenger
:
registrar
.
messenger
())
let
instance
=
FlutterPushPlugin
()
registrar
.
addMethodCallDelegate
(
instance
,
channel
:
channel
)
}
public
static
func
register
(
with
registrar
:
FlutterPluginRegistrar
)
{
let
channel
=
FlutterMethodChannel
(
name
:
"ewin:flutter_push"
,
binaryMessenger
:
registrar
.
messenger
())
let
instance
=
FlutterPushPlugin
()
registrar
.
addMethodCallDelegate
(
instance
,
channel
:
channel
)
}
public
func
handle
(
_
call
:
FlutterMethodCall
,
result
:
@escaping
FlutterResult
)
{
switch
call
.
method
{
case
"getPlatformVersion"
:
result
(
"iOS "
+
UIDevice
.
current
.
systemVersion
)
default
:
result
(
FlutterMethodNotImplemented
)
@objc
public
func
handle
(
_
call
:
FlutterMethodCall
,
result
:
@escaping
FlutterResult
)
{
switch
call
.
method
{
case
"getPlatformVersion"
:
result
(
"iOS "
+
UIDevice
.
current
.
systemVersion
)
case
"init"
:
print
(
"init初始化"
)
// 初始化
UNUserNotificationCenter
.
current
()
.
requestAuthorization
(
options
:
[
.
alert
,
.
sound
,
.
badge
])
{
granted
,
_
in
if
granted
{
print
(
"有通知权限"
)
DispatchQueue
.
main
.
async
{
UIApplication
.
shared
.
registerForRemoteNotifications
()
}
}
else
{
print
(
"无用通知权限"
)
}
}
result
(
true
)
case
"checkPermission"
:
print
(
"checkPermission检测权限"
)
UNUserNotificationCenter
.
current
()
.
requestAuthorization
(
options
:
[
.
alert
,
.
sound
,
.
badge
])
{
granted
,
_
in
if
granted
{
print
(
"有通知权限"
)
}
else
{
print
(
"无用通知权限"
)
}
}
result
(
true
)
case
"getPermission"
:
print
(
"getPermission跳转设置获取权限"
)
if
#available(iOS 15.0, *)
{
// iOS 15 及以上版本,直接跳转到通知设置页面
if
let
url
=
URL
(
string
:
"App-Prefs:NOTIFICATIONS_ID"
)
{
UIApplication
.
shared
.
open
(
url
,
options
:
[:],
completionHandler
:
nil
)
}
}
else
{
// iOS 15 以下版本,跳转到应用的设置页面
if
let
url
=
URL
(
string
:
UIApplication
.
openSettingsURLString
)
{
UIApplication
.
shared
.
open
(
url
,
options
:
[:],
completionHandler
:
nil
)
}
}
result
(
true
)
default
:
result
(
FlutterMethodNotImplemented
)
}
}
}
}
...
...
Please
register
or
login
to post a comment