Zum Inhalt springen

Anpassen des iOS SDK

Integration

Anchor link to

Deep Linking

Anchor link to

Fügen Sie in Ihrer Info.plist-Datei das URL types-Array mit URL Identifier und URL Scheme hinzu.
Im folgenden Beispiel ist das URL Scheme com.pushwoosh und der URL Identifier ist promotion.

Fügen Sie in Ihrer App-Delegate-Datei (normalerweise AppDelegate.m für iOS 12 und älter oder SceneDelegate.m für iOS 13 und neuer) die entsprechende openURL-Delegatfunktion hinzu, wie im folgenden Beispiel beschrieben. Das Beispiel prüft auf die richtige Seite, parst den „id“-Wert aus der URL und öffnet als Reaktion den PromoPageViewController.

AppDelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
if page == "promotion" {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

SceneDelegate.swift

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else { return }
let components = URLComponents(url: urlContext.url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
guard page == "promotion" else {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

In-App-Kauf-Tracking

Anchor link to

Standardmäßig ist das Tracking von In-App-Käufen deaktiviert. Wenn Sie In-App-Käufe bei der Konfiguration von Customer Journeys verfolgen möchten, setzen Sie das Flag Pushwoosh_PURCHASE_TRACKING_ENABLED in der info.plist-Datei auf true. Eine Liste der verfügbaren Flags finden Sie in der Tabelle.

Wenn Sie In-App-Käufe manuell verfolgen möchten, können Sie den folgenden Code verwenden.

Rufen Sie in der paymentQueue:updatedTransactions:-Delegatmethode die sendSKPaymentTransactions-Methode des PushManager auf.

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
// In-Apps Tracking Pushwoosh code here
Pushwoosh.sharedInstance().sendSKPaymentTransactions(transactions)
// the rest of the code, consume transactions, etc
}
InAppTrackingViewController.swift

Geozones-Push-Benachrichtigungen

Anchor link to

Geozones-Push-Benachrichtigungen sind in einem separaten Framework PushwooshGeozones gekapselt.

  1. Fügen Sie das PushwooshGeozones.framework zu Ihrem Projekt hinzu

Um das PushwooshGeozones.framework mit einem Abhängigkeitsmanager zu Ihrem Projekt hinzuzufügen, fügen Sie die folgenden Zeilen in Ihre podfile- oder cartfile-Datei ein:

pod 'PushwooshXCFramework/Geozones'

Alternativ können Sie das Framework einfach per Drag & Drop in Link Binaries With Libraries in den Build Phases Ihres Projekts ziehen.

  1. Fügen Sie die folgenden Schlüssel zu Ihrer Info.plist hinzu:
  • NSLocationWhenInUseUsageDescription(erforderlich), damit die App Geozones nur verfolgt, während sie im Vordergrund ausgeführt wird.
  • NSLocationAlwaysAndWhenInUseUsageDescription(erforderlich), damit die App Geozones sowohl im Vordergrund als auch im Hintergrund verfolgt und ein Dialogfeld zur Berechtigungsanfrage anzeigt.
  • NSLocationAlwaysUsageDescription(optional), damit die App Geozones jederzeit verfolgt; sollte verwendet werden, wenn Ihre App auf iOS 10 und frühere Versionen abzielt.
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>for app to track Geozones in both conditions and to show a permission request dialog</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>for app to track Geozones only while running in the foreground</string>

  1. Importieren Sie das Framework
import PushwooshGeozones
  1. Starten Sie das Geozones-Tracking
PWGeozonesManager.shared()?.startLocationTracking()

GitHub-Referenz

override func viewDidLoad() {
super.viewDidLoad()
// Start Geozones tracking when needed
PWGeozonesManager.shared().startLocationTracking()
}

Erstellen einer Rich-Media-Warteschlange

Anchor link to

Falls mehrere Rich-Media-Seiten gleichzeitig angezeigt werden sollen (z. B. wenn Trigger-Ereignisse für zwei oder mehr In-Apps gleichzeitig stattfinden oder eine Rich-Media-Seite bereits angezeigt wird, wenn ein anderes Trigger-Ereignis auftritt), können Sie eine Warteschlange für die Anzeige von Rich-Media-Seiten einrichten. Um eine Warteschlange zu erstellen, folgen Sie den unten beschriebenen Schritten.

  1. Erstellen Sie eine Klasse, die PWRichMediaPresentingDelegate implementiert:
@interface ChainedRichMediaPresentingDelegate () <PWRichMediaPresentingDelegate>
@property (nonatomic) NSMutableArray *queue;
@property (nonatomic) BOOL inAppIsPresenting;
@end
@implementation ChainedRichMediaPresentingDelegate
- (instancetype)init {
self = [super init];
if (self) {
_queue = [NSMutableArray new];
}
return self;
}
- (BOOL)richMediaManager:(PWRichMediaManager *)richMediaManager shouldPresentRichMedia:(PWRichMedia *)richMedia {
[_queue addObject:richMedia];
return !_inAppIsPresenting;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didPresentRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = YES;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didCloseRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = NO;
[_queue removeObject:richMedia];
if (_queue.count) {
[[PWRichMediaManager sharedManager] presentRichMedia:_queue.firstObject];
}
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager presentingDidFailForRichMedia:(PWRichMedia *)richMedia withError:(NSError *)error {
[self richMediaManager:richMediaManager didCloseRichMedia:richMedia];
}
@end

2. Setzen Sie den Delegaten:

[PWRichMediaManager sharedManager].delegate = [ChainedRichMediaPresentingDelegate new];

Automatisches Abspielen eines Videos, das in einer Rich Notification mit Force Touch gesendet wurde

Anchor link to

Um ein als Anhang einer Rich Notification gesendetes Video automatisch abzuspielen, wenn die Benachrichtigung ohne Benutzerinteraktion erweitert wird, folgen Sie den unten stehenden Schritten:

  1. Fügen Sie die Notification Content Extension zu Ihrem Projekt hinzu:
  • Wählen Sie in Xcode Datei > Neu > Ziel.
  • Wählen Sie Notification Content Extension.
  • Weisen Sie ihr einen Namen zu und schließen Sie die Einrichtung ab.
Notification Content Extension - iOS Rich Push Notification

Wenn Sie mit der Meldung „Schema aktivieren“ aufgefordert werden, wählen Sie „Abbrechen“.

Schema für Notification Content aktivieren
  1. Passen Sie die Eigenschaften und Methoden in der Content Extension wie folgt an:
import UIKit
import UserNotifications
import UserNotificationsUI
import AVKit
class NotificationViewController: UIViewController, UNNotificationContentExtension {
var playerController: AVPlayerViewController!
@IBOutlet weak var playerBackgroundView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any required interface initialization here.
}
func didReceive(_ notification: UNNotification) {
let attachment = notification.request.content.attachments.first
playerController = AVPlayerViewController()
// Set height programmatically
// preferredContentSize.height = 250
if let url = attachment?.url {
setupVideoPlayer(url: url)
} else {
print("No valid URL...")
}
}
private func setupVideoPlayer(url: URL) {
guard let playerController = self.playerController else { return }
let player = AVPlayer(url: url)
playerController.player = player
playerController.view.frame = self.playerBackgroundView.bounds
playerBackgroundView.addSubview(playerController.view)
addChild(playerController)
playerController.didMove(toParent: self)
player.play()
}
  1. Integrieren Sie eine UIView in MainInterface.storyboard:
UIView im MainInterface.storyboard
  1. Verknüpfen Sie das playerBackgroundView IBOutlet mit der gerade hinzugefügten UIView:
Verknüpfen des playerBackgroundView IBOutlet mit UIView
  1. Aktualisieren Sie die info.plist-Datei mit dem folgenden Eintrag:
UNNotificationExtensionUserInteractionEnabled = true
UNNotificationExtensionUserInteractionEnabled = true

Um ein Video an Ihre Benachrichtigung anzuhängen, geben Sie die URL eines Videos in das Feld „Media Attachment“ im Control Panel ein:

URL des Videos im Feld Media Attachment im Pushwoosh Control Panel

Wenn Sie eine Benachrichtigung über eine API-/createMessage-Anfrage senden, fügen Sie die URL in den Parameter ‘ios_attachment’ ein und stellen Sie sicher, dass das Flag ‘mutable-content’ auf `1` gesetzt ist.

Benutzerdefinierter Push-Ton

Anchor link to

Um beim Empfang einer Push-Benachrichtigung einen benutzerdefinierten Ton abzuspielen, legen Sie die Audiodatei zunächst in den Stammordner Ihres Projekts.

Geben Sie dann den Namen der Sounddatei in den Push-Parametern an – füllen Sie das Feld „Sound“ in den iOS-spezifischen Einstellungen Ihrer Nachricht aus oder geben Sie den Dateinamen als Wert für den Parameter „ios_sound“ der createMessage API-Anfrage an.

Die Audiodatei für einen benutzerdefinierten iOS-Sound muss in einem der folgenden Formate vorliegen: .aif, .caf, .wav. Stellen Sie sicher, dass Sie das Format im Dateinamen angeben; andernfalls wird es vom Pushwoosh iOS SDK ignoriert.

iOS Provisional Push

Anchor link to

Wie es funktioniert

Anchor link to

Provisional Push-Benachrichtigungen erscheinen lautlos im Benachrichtigungscenter des Benutzers, aber nicht auf dem Sperrbildschirm. Diese Art von Push-Benachrichtigungen muss nicht explizit von einem Benutzer erlaubt werden: Sie können mit dem Senden beginnen, sobald ein Benutzer Ihre App installiert und startet.

Benutzer können jedoch weiterhin Ihre prominenten Push-Benachrichtigungen abonnieren: Beim Öffnen der Provisional Push haben sie zwei Möglichkeiten, ihre Erfahrung zu wählen – Push-Benachrichtigungen im Benachrichtigungscenter ohne Alarme und Töne zu behalten oder Ihnen zu erlauben, Push-Benachrichtigungen prominent zu senden, sodass sie auf dem Sperrbildschirm erscheinen.

Provisional Pushes sind so konzipiert, dass Benutzer fundierte Entscheidungen darüber treffen können, ob sie Benachrichtigungen von Ihrer App erhalten möchten. Da die native APN-Abonnementanfrage den Benutzern nur einmal angezeigt wird und sie zum späteren Abonnieren in die Systemeinstellungen ihres Telefons gehen müssen, abonnieren einige Benutzer möglicherweise nicht, da sie nicht wissen, welchen Wert sie mit Ihren Push-Benachrichtigungen erhalten. Provisional Pushes geben den Benutzern dieses Verständnis: Sie können sehen, welche Inhalte Sie in Push-Benachrichtigungen liefern, und entscheiden, ob sie über diese Inhalte prominent benachrichtigt werden müssen.

Wie man es implementiert

Anchor link to

1. Integrieren Sie das Pushwoosh iOS SDK, indem Sie der Anleitung folgen.

2. Fügen Sie die folgende Zeichenfolge zur AppDelegate Ihres Projekts hinzu, bevor Sie die registerForPushNotifications()-Methode aufrufen:

if #available(iOS 12.0, *) {
Pushwoosh.sharedInstance().additionalAuthorizationOptions = UNAuthorizationOptions.provisional
}

Das ist alles! App-Benutzer erhalten Nachrichten direkt in ihr Benachrichtigungscenter, sobald sie die App installieren.

Teilen Sie uns Ihr Feedback mit

Anchor link to

Ihr Feedback hilft uns, eine bessere Erfahrung zu schaffen, daher würden wir uns freuen, von Ihnen zu hören, wenn Sie während des SDK-Integrationsprozesses auf Probleme stoßen. Wenn Sie auf Schwierigkeiten stoßen, zögern Sie bitte nicht, uns Ihre Gedanken über dieses Formular mitzuteilen.