2017-04-27 134 views
0

我需要在iOS 10和更高版本上爲iPhone啓用豐富通知(5x,6x & 7x)型號。通知附帶一個嵌入式圖像,圖像應該默認擴展。請參閱下面的示例圖像:iOS上的豐富通知

Full view width utilized.

誰能幫助?

在此先感謝。

回答

1

我已經在iOS的10中創建一個例子,文檔豐富通知看看它U可以得到有關Rich通知一些想法,這個例子是關於顯示圖像UNNotificationContentExtension

步驟1

使環境適合通知。請確保您啓用背景模式推送通知Enabling Background Modes

Enabling Push Notifications

第2步:創建UNNotificationContentExtension

點擊底部的+圖標它創建了一個目標模板並選擇通知內容擴展 - >下一步 - >爲內容擴展名創建名稱 - >完成Creating UNNotificationContentExtension

步驟3:配置所創建的擴展

enter image description here

在NSExtension字典表示所述通知內容的顯示的Info.plist文件,這些執行上長按所接收的通知

  • UNNotificationExtensionOverridesDefaultTitle:我們可以爲我們的通知定製標題,默認情況下它會顯示應用程序的名稱self.title = myTitle
  • UNNotificationDefaultContentHidden:該布爾確定通知的默認身體是否被隱藏或不
  • UNNotificationCategory:在UNUserNotificationCenter在應用程序中創建類別。這裏可以是一個字符串,也可以是一串字符串,因此每個類別都可以給出不同類型的數據,我們可以從中創建不同的UI。我們發送的有效載荷必須包含類別名稱才能顯示此特定擴展名
  • UNNotificationExtensionInitialContentSizeRatio:初始內容的大小,即首次顯示ContentExtension的初始大小(相對於設備的寬度)。這裏1表示高度將等於寬度

第4步:創建在我們的應用程序UNNotificationActionUNNotificationCategory

在應用程式的AppDelegate中。迅速didFinishLaunchingWithOptions功能添加

let userNotificationAction:UNNotificationAction = UNNotificationAction.init(identifier: "ID1", title: "வணக்கம்", options: .destructive) 
    let userNotificationAction2:UNNotificationAction = UNNotificationAction.init(identifier: "ID2", title: "Success", options: .destructive) 

    let notifCategory:UNNotificationCategory = UNNotificationCategory.init(identifier: "CATID1", actions: [userNotificationAction,userNotificationAction2], intentIdentifiers: ["ID1","ID2"] , options:.customDismissAction) 

    UNUserNotificationCenter.current().delegate = self 
    UNUserNotificationCenter.current().setNotificationCategories([notifCategory]) 
    UIApplication.shared.registerForRemoteNotifications() 

我們創建了兩個UNNotificationAction與標識符ID1ID2並添加這些行動的UNNotificationCategory與標識符CATID1(中的categoryID在ContentExtension的Info.plist文件是一樣的,我們在這裏創建了應該使用有效載荷和plist文件)。我們設定的類別,以我們的應用程序的UNUserNotificationCenter並在下一行,我們報名參加該調用didRegisterForRemoteNotificationsWithDeviceToken函數,其中我們得到的設備標識的通知

注意:不要忘記import UserNotifications在AppDelegate.swift並添加UNUserNotificationCenterDelegate

步驟5:樣品淨荷NotificationContent

'aps': { 
    'badge': 0, 
    'alert': { 
     'title': "Rich Notification", 
     'body': "Body of RICH NOTIFICATION", 
     }, 
    'sound' : "default", 
    'category': "CATID1", 
    'mutable-content':"1", 
    }, 
'attachment': "2" 

步驟6:配置ContentExtension

執行通知操作時,會自動顯示該類別的相應操作。讓我們來看看如何其執行

import UIKit 
import UserNotifications 
import UserNotificationsUI 

class NotificationViewController: UIViewController, UNNotificationContentExtension { 

@IBOutlet var imageView: UIImageView? 
override func viewDidLoad() { 
    super.viewDidLoad() 
} 

func didReceive(_ notification: UNNotification) { 
    self.title = "Koushik" 
    imageView?.backgroundColor = UIColor.clear 
    imageView?.image = #imageLiteral(resourceName: "welcome.jpeg") 
} 

func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) { 

    self.title = "Koushik" 
    imageView?.image = UIImage.init(named: "Success.jpeg") 

    if(response.actionIdentifier == "ID1") 
    { 
     imageView?.image = UIImage.init(named: "Success.jpeg") 
    } 
    else 
    { 
     imageView?.image = UIImage.init(named: "welcome.jpeg") 
    } 

    } 
} 

第7步代碼:結果

接收和長按/點擊查看通知,該通知是這樣的enter image description here

的標題是「後Koushik「,因爲我們將self.title = "Koushik"UNNotificationExtensionOverrideDefaultTitle設爲YES。在步驟3,我們給UNNotificationExtensionDefaultContentHidden爲NO如果是,那麼該通知將看起來像圖像3和4

注:我們不能用滾動視圖或anykind滾動的內容擴展,但我們可以用self.preferredContentSize = CGSize(width: 280, height: minimumSize.height)增加視圖的內容大小但默認消息應用程序使用滾動。糾正我,如果我錯了。