以下のコードはiOS SDK3.3.0以降では不要です。3.3.0以降をご利用の場合は以下のコードを実装しないでください。詳細は3.3.0のリリース・ノートをご覧ください。
プッシュ通知時にReproからのプッシュ通知か否で処理を分岐し制御をおこなってください。
下記はSwiftのサンプルコードとなります。
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
var ignoreOpenURL: Bool = false
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
//reproからのカスタムURL付きプッシュ通知をフォアグラウンドで受信した場合
if (application.applicationState == .active) {
let fromRepro = userInfo["repro"] != nil
if fromRepro {
if let url = userInfo["rpr_url"] as? String {
if url.hasPrefix("my_custom_scheme") { //my_custom_schemeの部分にはアプリ独自のスキーマを指定してください
// フラグをセットしておく
ignoreOpenURL = true
}
}
}
}
//この後Repro SDKがOpen URLを実行しますが、application(_:open:options:)メソッドにて無視されます
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
//reproからのカスタムURL付きプッシュ通知をフォアグラウンドで受信した場合
let fromRepro = notification.request.content.userInfo["repro"] != nil
if fromRepro {
if let url = notification.request.content.userInfo["rpr_url"] as? String {
if url.hasPrefix("my_custom_scheme") { //my_custom_schemeの部分にはアプリ独自のスキーマを指定してください
// フラグをセットしておく
ignoreOpenURL = true
}
}
}
completionHandler([.alert, .badge, .sound])
//この後Repro SDKがOpen URLを実行しますが、application(_:open:options:)メソッドにて無視されます
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
//アプリ独自の実装が不要な場合でも以下の1行は実装してください。
completionHandler()
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if (ignoreOpenURL) {
print("Open URLを無視します")
ignoreOpenURL = false
return true
}
// URLに対する処理を実装
return true
}