在线文档教程
React native

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 LibrarieslibRCTPushNotification.a

最后,为了支持notificationregister事件你需要增加你的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:作为字符串重复的时间间隔。可能的值:minutehourdayweekmonthyear

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上的数据对象