PushNotificationIOS
PushNotificationIOS
只有原生代码的项目
本部分仅适用于react-native init
使用Create React Native App创建的项目或已经退出的项目。有关弹出的更多信息,请参阅创建React Native App存储库的指南。
处理您的应用的推送通知,包括权限处理和图标徽章号码。
要启动并运行,请使用Apple和您的服务器端系统配置您的通知。
手动链接PushNotificationIOS库
- 将以下内容添加到您的项目中:
node_modules/react-native/Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj
- 将以下内容添加到
Link Binary With Libraries
:libRCTPushNotification.a
最后,为了支持notification
和register
事件你需要增加你的AppDelegate。
在您的顶部AppDelegate.m
:
#import <React/RCTPushNotificationManager.h>
然后在AppDelegate实现中添加以下内容:
// Required to register for notifications
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
[RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings];
}
// Required for the register event.
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
// Required for the notification event. You must call the completion handler after handling the remote notification.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
[RCTPushNotificationManager didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
// Required for the registrationError event.
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
[RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
}
// Required for the localNotification event.
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[RCTPushNotificationManager didReceiveLocalNotification:notification];
}
方法
=(NewData, NoData, ResultFailed, }, static, (, :)
static scheduleLocalNotification(details)
为将来的演示安排localNotification。
细节是一个对象,包含:
fireDate
:系统发送通知的日期和时间。
alertTitle
:显示为通知警报标题的文本。
alertBody
:通知警报中显示的消息。
alertAction
:“动作”显示在可执行通知下。默认为“查看”;
soundName
:通知被触发时播放的声音(可选)。
isSilent
:如果为true,则通知将显示为没有声音(可选)。
category
:此通知的类别,可执行通知所需(可选)。
userInfo
:包含其他通知数据的可选对象。
applicationIconBadgeNumber
(可选):显示为应用图标徽章的号码。将该数字设置为0将删除图标徽章。
repeatInterval
:作为字符串重复的时间间隔。可能的值:minute
,hour
,day
,week
,month
,year
。
static cancelAllLocalNotifications()
取消所有预定的本地通知
static removeAllDeliveredNotifications()
从通知中心删除所有已发送的通知
static getDeliveredNotifications(callback)
为您提供仍在通知中心中显示的应用通知列表
@param回调函数接收传递的通知数组
交付的通知是一个对象,其中包含:
identifier
:此通知的标识符。
title
:这个通知的标题。
body
:此通知的正文。
category
:这个通知的类别,如果有的话。
userInfo
:包含其他通知数据的可选对象。
thread-id
:这个通知的线程标识符,如果有的话。
static removeDeliveredNotifications(identifiers)
从通知中心删除指定的通知
@参数标识符通知标识符数组
static setApplicationIconBadgeNumber(number)
在主屏幕上设置应用程序图标的徽章号码
static getApplicationIconBadgeNumber(callback)
获取主屏幕上应用程序图标的当前徽章编号
static cancelLocalNotifications(userInfo)
取消本地通知。
可以选择将取消通知的集合限制为那些userInfo
字段与userInfo
参数中相应字段匹配的通知。
static getScheduledLocalNotifications(callback)
获取当前计划的本地通知。
static addEventListener(type, handler)
当应用程序在前台或后台运行时,将侦听程序附加到远程或本地通知事件。
有效事件是:
notification
:收到远程通知时触发。处理程序将被调用一个实例PushNotificationIOS
。
localNotification
:收到本地通知时触发。处理程序将被调用一个实例PushNotificationIOS
。
register
:当用户注册远程通知时触发。处理程序将使用代表deviceToken的十六进制字符串进行调用。
registrationError
:当用户未能注册远程通知时触发。通常在APNS出现问题或设备是模拟器时发生。处理程序将被调用{message:string,code:number,details:any}。
static removeEventListener(type, handler)
删除事件侦听器。这样做是componentWillUnmount
为了防止内存泄漏
static requestPermissions(permissions?)
请求来自iOS的通知权限,提示用户的对话框。默认情况下,它将请求所有通知权限,但可以通过传递请求权限的映射来请求这些权限的子集。支持以下权限:
alert
badge
sound
如果向该方法提供了映射,则只会请求具有真值的权限。
此方法返回一个承诺,该承诺将在用户接受,拒绝或权限以前被拒绝时解决。承诺解析为许可的当前状态。
static abandonPermissions()
取消注册通过Apple推送通知服务收到的所有远程通知。
您应该仅在极少数情况下调用此方法,例如应用程序的新版本取消了对所有类型远程通知的支持。用户可以暂时阻止应用通过“设置”应用的“通知”部分接收远程通知。未通过此方法注册的应用程序始终可以重新注册。
static checkPermissions(callback)
查看当前启用了哪些推送权限。callback
将被一个permissions
对象调用:
alert
:布尔
badge
:布尔
sound
:布尔
static getInitialNotification()
如果应用程序是通过推送通知启动的,则此方法返回解析为通知对象的promise null
。
constructor(nativeNotif)
你永远不需要实例化PushNotificationIOS
你自己。听取notification
事件和调用getInitialNotification
就足够了
finish(fetchResult)
这种方法适用于已经通过接收远程通知:application:didReceiveRemoteNotification:fetchCompletionHandler:
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification: fetchCompletionHandler:
在远程通知处理完成时调用此函数执行。调用此块时,传入最能描述操作结果的提取结果值。你必须
调用这个处理程序,并尽快这样做。有关可能值的列表,请参阅PushNotificationIOS.FetchResult
。
如果您不调用此方法,则可能会限制后台远程通知,请参阅上述文档链接以了解更多信息。
getMessage()
getAlert
获取通知的主消息字符串的别名
getSound()
从aps
对象中获取声音字符串
getCategory()
从aps
对象中获取类别字符串
getAlert()
从aps
对象获取通知的主要消息
getContentAvailable()
从aps
对象中获取内容可用的编号
getBadgeCount()
从aps
对象中获取徽章计数编号
getData()
获取notif上的数据对象