iOS 14について - RakutenReward/RakutenRewardSDK GitHub Wiki

iOS 14 に伴うアプリケーションの影響について

2020/09/16 Apple よりiOS14 および XCode12 に関してリリースがございました。
こちらのリリースに伴いまして、弊社 リワードSDKに関しましてもアップデートがございます。

リワードSDKのアップデートに関しましてユーザー様への影響

iOS14にアップグレードされたユーザ様におきましては、リワードSDKにおける基本的な機能(ミッション達成、ポイント獲得)には影響ございません。 

開発者様へ

弊社リワードSDKにおきましては、広告の最適化のためIDFAの取得をSDKにて行っております。 Appleからのアナウンス通り、IDFA取得のためのパーミッション(許可ダイアログ)表示はなくなりますが、 iOS 14よりIDFAの取得のためのライブラリの変更に伴い、iOS14にアップグレードされたユーザー様に対して IDFAが取得できなくなります。 そのため、iOS14のユーザー様向けにIDFAを取得できるリワードSDK各バージョンをご用意いたしました。

バージョン 内容
7.0.3 XCode 11.7でビルド = iOS13でビルド
8.0.0 XCode 12.0でビルド = iOS14でビルド

iOS14向けにIDFAを取得できるようにするためには、8.0.0以上にアップデートしていただく必要があります。 引き続き XCode11でもアプリの提出は可能ですので、こちらの対応が必要ない場合は7.xのバージョンをご利用ください。

iOS14のIDFA取得のパターンについて

アプリケーション リワードSDK ユーザーOS IDFAの取得の可否
iOS 13 iOS 13 iOS 13
iOS 13 iOS 13 iOS 14 x
iOS 14 iOS 13 iOS 13
iOS 14 iOS 13 iOS 14 x (SDKのアップデートが必要)
iOS 14 iOS 14 iOS 13
iOS 14 iOS 14 iOS 14

※ リワードSDKがiOS14の場合というのはSDKを8.0.0以上にした場合になります

アプリケーションよりリワードSDKが先行することはありません。 アプリケーションiOS13, リワードSDK iOS14 という組み合わせでは、コンパイルエラーが発生します。

SDK 8.0.2 以降で広告IDを送信する方法について

SDK 8.0.2 以降では iOS14以上のユーザー様に関する広告IDの取得はアプリケーション側にお願いしております。

RakutenReward.sharedInstance.advertisingID = "IDFA"

広告ID(IDFA)の取得方法について

こちらに例を記載しておきます。詳細についてはAppleのドキュメンテーションなどをご確認ください 

func updateRewardAdID() {
        if #available(iOS 14, *) {
            #if canImport(AppTrackingTransparency) &&  (arch(x86_64) || arch(arm64))
            if ATTrackingManager.trackingAuthorizationStatus == .authorized {
                RakutenReward.sharedInstance.advertisingID = ASIdentifierManager().advertisingIdentifier.uuidString
            }
            #endif
        }
    }
// requesting permission:
if #available(iOS 14, *) {
                    #if canImport(AppTrackingTransparency) &&  (arch(x86_64) || arch(arm64))
                    alert.addAction(
                        UIAlertAction(
                            title: "Permission",
                            style: UIAlertAction.Style.default,
                            handler: {_ in
                        ATTrackingManager
                            .requestTrackingAuthorization(
                                completionHandler: { _ in
                                    updateRewardAdID()
                                })
                    }))
                    #endif
                }