# iOS 富媒体通知集成

从 iOS 10 开始，您可以为推送通知附加静态或动态图片，甚至是视频。当用户用力点按通知时，它将直接显示在通知中。

启用此功能非常简单，几乎不涉及编码。让我们开始吧！

## 1. 创建通知服务扩展 (Notification Service Extension)

首先，创建一个 [Notification Service Extension](https://developer.apple.com/reference/usernotifications/unnotificationserviceextension)。此扩展程序会下载将要向用户显示的内容。

将新 target 添加到您的项目中（File -> New -> Target），并创建 _Notification Service Extension_。

<img src="/ios-rich-notification-1.webp" alt="创建通知服务扩展"/>

<Aside type="caution">
通知服务扩展 (Notification Service Extension) 拥有独立的 Apple App ID 和 Provisioning profile！

请注意，通知扩展有其自己的 Bundle ID（例如：`com.pushwoosh.example.NotificationService`）以及自己的 **Apple App ID** 和 **Provisioning profile**，这些都必须在 Apple Developer Portal 中单独设置。
</Aside>

## 2. 通知服务扩展 (Notification Service Extension) 代码

该代码会下载附件并调用通知内容处理程序。
只需将其复制并粘贴到您的扩展中即可。

<Tabs syncKey="code-example">
<TabItem label="Swift">
```swift
import UserNotifications
import PushwooshFramework

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        PWNotificationExtensionManager.shared().handle(request, contentHandler: contentHandler)
    }
}
```
</TabItem>

<TabItem label="Objective-C">
```objective-c
#import "PWNotificationExtensionManager.h"

@interface NotificationService : UNNotificationServiceExtension

@end

@implementation NotificationService

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request contentHandler:contentHandler];
}

@end
```
</TabItem>
</Tabs>

## 3. 允许非安全附件 URL

通知服务扩展 (Notification Service Extension) 是一个独立的二进制文件，并且**有其自己的 Info.plist** 文件。
将 **App Transport Security Settings** 以及 **Allow Arbitrary Loads** 标志设置为 ```true``` 添加到**扩展的 Info.plist** 文件中。

**Info.plist**:
```xml
<key>NSAppTransportSecurity</key>
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>
```

## 4. 发送富媒体通知

要发送富媒体通知，只需在 **BANNER URL** 字段中指定文件的 URL 即可。

<img src="/ios-rich-notification-2.webp" alt=""/>

搞定！用力点按通知，您就大功告成了！

<video src="/ios-rich-notification-3.webm" title="示例" autoplay loop muted playsinline />

<Aside type="tip">
了解如何[通过用力触摸让 iOS 富媒体推送通知中的视频自动播放](/zh/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#autoplay-a-video-sent-in-a-rich-notification-with-force-touch)
</Aside>

## 与我们分享您的反馈

您的反馈有助于我们创造更好的体验，因此如果您在 SDK 集成过程中遇到任何问题，我们非常希望听到您的声音。如果您遇到任何困难，请随时[通过此表单](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform)与我们分享您的想法。