楽天リワードSDK iOS 導入手順 - RakutenReward/RakutenRewardSDK GitHub Wiki

スタートガイド

M1チップについて

SDKバージョン9.4.2よりXCFrameworkでのM1チップ搭載PCでのシミュレーターをサポートしております。

2022/04/05 iOS SDK バージョン 9.3 について

2022/03/31 にリリースをしたSDKバージョンを9.3ですが、 BitCode をオンにしていると iTunes よりサブミットした場合エラーが 起きることがわかっております。
こちらに関しては BitCode をオフしていただくことで対応が可能です。

2022/04/08 SDKを 9.4にアップデートしていただくことでこの問題は解消されます

2022/03/15 iOS 15.4 のアップデートに伴うAd機能

2022/03/15 Apple より iOS 15.4 のアップデートに伴い機能の一部に不具合が生じております。
対象は、こちらの機能をご利用の方のみとなります。(リワードSDKの主機能には問題はございません)
現在、調査と不具合の解消を行なっておりますので、今しばらくお待ちください。ご迷惑をおかけいたします。

対象 : iOS 15.4 をお使いのユーザーでかつ上記の追加の広告機能をご利用の場合
現象 : 広告をタップしても広告先に遷移しない
原因 : OS アップデートSafari

2022/03/31 こちら対応済みのSDK バージョン 9.3 をリリース済みです

2021/09/28 アップデート iOS SDK 9.0.0をリリースいたしました。  こちらは iOS15、XCode13でのビルド用となります。 アプリケーションを XCode 13でビルドする場合こちらの SDKをおすすめいたします。

SDK バージョン 8.2 以降の 楽天市場アプリ広告のディープリンク対応について

広告について、一部楽天市場広告に関して、ディープリンクの機能に対応いたしました。
こちら広告をタップすると、楽天市場のアプリを開く仕様となっております。
こちらの機能は任意となっております。詳細はこちらです。

iOS14(XCode 12)について SDK バージョン8.0.2 以降

こちらをご確認ください

動作環境について

楽天リワードSDKは、iOS 8 およびXCode 9.0 以上をサポートしています。 SDKはSwiftのFrameworkとして実装されています。Swiftのバージョンによる問題や Objective-C, Objective-C++をご利用の場合は別途Swift用の設定が必要になります。

SDKのバージョン XCodeのバージョン Swiftバージョン
3.0.0 9.0 3.0
3.2.2 - 3.2.3 9.1, 9.2 4.0
3.3.0 - 3.3.1 9.3 4.1
5.0 10.0 4.2
5.2 10.0 4.2
6.0.0 - 6.0.2 10.2 5.0
6.0.3 11.0 5.0
6.0.4 11.0 5.1
7.0.0 11.0 5.1
7.0.1 11.1 5.1
7.0.2 11.4 5.1
7.0.3 11.7 5.1
7.0.5 11.7 5.2
8.0.2 12.1 5.3
8.0.3 12.2 5.3
8.0.4 12.2 5.3
8.1.0 12.2 5.3
8.2.0 12.2 5.3
8.2.1 12.2 5.3
8.3.0 12.2 5.3
8.3.1 12.2 5.3
9.0.0 13.0 5.5
9.0.1 13.0 5.5
9.1.0 13.0 5.5
9.2.0 13.0 5.5
9.3.0 13.2.1 5.5
9.4.0 13.2.1 5.5
9.4.1 13.2.1 5.5
9.4.2 13.2.1 5.5
9.4.3 13.2.1 5.5
9.5.0 13.2.1 5.5
9.6.0 13.2.1 5.5
9.6.1 13.3 5.5
10.0.0 14.2 5.7.2
10.1.0 14.2 5.7.2
11.0.0 15.2 5.9
11.1.0 15.2 5.9
11.2.0 15.2 5.9
12.0.0 16.0 6.x
12.0.1 16.0 6.x

3.0.0に関しましては、2018/5/9 に提供を終了いたしました。
7.0.0ではSDKの組み込みはiOS 8から可能ですが、SDKの機能はiOS 11以上で有効です (iOS 8 - 10のユーザはSDKの機能を利用できません) 7.0.0からWKWebViewを使用しております。

ダウンロードページリンク

SDKをプロジェクトにインポートする

"RakutenRewardSDK.framework" を "Embed Framework" に追加する。

import

CocoaPodsを利用する場合

SDKを直接ダウンロードしてインポートする代わりに、CocoaPodsを利用することもできます。 (ただしバージョン5.2.2以降)

ソースとしてReward-SDK-iOS 'https://github.com/Rakuten-Reward-SDK/Reward-SDK-iOS.git' を追加していただき 下記のようにPodfileに記述します。

source 'https://github.com/Rakuten-Reward-SDK/Reward-SDK-iOS.git'
 
target 'NewRewardSDKSampleAppSwift' do
  use_frameworks!
  # Pods for NewRewardSDKSampleAppSwift
pod 'RakutenRewardSDK'
end

Swift Package Manager (SPM) を利用する場合

以下の依存関係を追加する

dependencies: [
    .package(url: "https://github.com/Rakuten-Reward-SDK/Reward-SDK-iOS-SPM.git", .exact("12.0.0")),
]

Objective-Cでアプリケーションを開発する場合

Swift の Framework を読み込むために”Build Settings”で Swift のコンパイルに関する設定をする必要が あります。 “Always Embed Swift Standard Libraries” を Yes に設定します。

Always Swift

Objective-C++ でアプリを開発している場合

Objective-C での設定に加えて、Objective-C++ で Swift のヘッダーを読み込むのに必要な場合があり ます。(RewardSDK.h ではなく RewardSDK-Swift.h)

#import <RakutenRewardSDK/RakutenRewardSDK-Swift.h>

ATSの設定

SDK を使用する上で、いくつかのドメインに対して ATS の設定が必要になります。 下記のドメイン に対して、ATS の例外設定を追加してください。 (こちらに設定している理由は広告主様のページがSSL設定をしていないケースがあるからです)

  • jp
  • net

ATS

リワードSDKの使用方法(SDKの初期化)

SDK を組み込んだら、AppDelegate クラスに下記のコードを記載してください。 ※“**YOUR_APP_CODE”**の部分を開発者ポータルで発行したアプリケーションのApp Key に置き換えてください。

Swift

import RakutenRewardSDK

class AppDelegate: UIResponder, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: 
    [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    RakutenReward.sharedInstance.startSession(appCode: "YOUR_APP_CODE")
    return true
  }
  func applicationWillEnterForeground(_ application: UIApplication) { 
    RakutenReward.sharedInstance.startSession(appCode: "YOUR_APP_CODE")
  } 
}

Objective-C

#import <RakutenRewardSDK/RakutenRewardSDK.h> 

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[RakutenReward sharedInstance] startSessionWithAppCode:@"YOUR_APP_CODE"]; return YES;
}
- (void)applicationWillEnterForeground:(UIApplication *)application { 
  [[RakutenReward sharedInstance] startSessionWithAppCode:@"YOUR_APP_CODE"];
}

ミッションの達成について

ミッションを達成するにはアクションを送信する必要があります。 またミッションが達成されると、通知UIが表示されます(通知UIは変更可能です)。

アクション実行時

ユーザがアクションを行なったら、下記のメソッドを呼んでください。 その際、ミッションに関連 づけられた actionCode を引数として渡してください。

Swift

RakutenReward.sharedInstance.logAction(actionCode: "actionCode");

Objective-C

[[RakutenReward sharedInstance] logActionWithActionCode: @"actionCode"];

複数のアクションを連続で複数送信したい場合、送信の順序と達成の順番などを制御するために以下のメソッドの ご利用をお願いいたします。

Swift

RakutenReward.sharedInstance.logAction(actionCode: "actionCode", isQueueEnabled: true)

Objective-C

[RakutenReward.sharedInstance logActionWithActionCode:@"actionCode" isQueueEnabled:true];

Swift + Callback

RakutenReward.sharedInstance.logAction(actionCode: "actionCode") { logActionCallback in
    
}

通知UI

ユーザがアクションを実行してミッションが達成されると、通知 UI が表示されます。 SDK は モーダル及びバナーの通知 UI を用意しています。

Modal Banner

通知タイプ

ミッション達成時の通知の方法は4通りあります。 上記のモーダル、バナーの通知 UI を表示するパ ターンに加えて、通知 UI を表示しない方式と、 アプリ側で任意の通知 UI を設定する方法があります。 これらは開発者ポータルでミッションを設定する際に定義することができます。

通知タイプ UI
モーダル SDK が用意したモーダル UI が表示されます
バナー SDK が用意したバナーUI が表示されます
バナー 50 SDK が用意したバナーUI が表示されます
バナー 250 SDK が用意したバナーUI が表示されます
カスタム 開発者側で任意の UI を設定できます
通知なし 通知 UI は表示されません

ポータルボタン

ポータルボタンはリワードポータルへアクセスするためのボタンです。 SDK が用意した RewardPortalButton クラスを使用することで、アプリ内にポータルボタンを配置することが可能です。

カラータイプ

ポータルボタンには Dark と Light の二通りのカラータイプがあります。 背景が明るい色の場合は Dark を、背景が暗い場合は Light を使用してください。初期値は Light に設定されています。

Dark Dark Light Light

ポイント未獲得件数を示すバッジ

ユーザがミッションを達成したもののポイントをまだ取得していない場合、未獲得となっている件 数が、ポータルボタン上に赤丸のバッジとして表示されます。バッジの位置はデフォルトでは右上 ですが、下記の方法で変更することも可能です。

ポータルボタンのカスタマイズ

ポータルボタンのカラータイプ、画像、バッジの位置は下記の方法で変更することが可能です。

Swift

@IBOutlet weak var rewardPortalButton : RewardPortalButton!
// Change color type of button
self.rewardPortalButton.colorType = RewardButton.ColorType.Dark
// Change image of button
self.rewardPortalButton.portalButton.setImage(UIImage(named: "sample_image"), forState: UIControlState.Normal)
// Change badge position of button
self.rewardPortalButton.badgePosition = RewardPortalButton.BadgePosition.TopRight

Objective-C

@property (weak, nonatomic) IBOutlet RewardPortalButton *rewardPortalButton;
// Change color type of button
self.rewardPortalButton.colorType = ColorTypeDark;
// Change image of button
[self.rewardPortalButton.portalButton setImage:[UIImage imageNamed:@"sample_image"] forState:UIControlStateNormal];
// Change badge position of button
self.rewardportalButton.badgePosition = BadgePositionTopRight;

ポータル表示をコードから行う場合

Swift

RakutenReward.sharedInstance.openPortal()

Objective-C

[[RakutenReward sharedInstance] openPortal];

ポイント未獲得件数を標準のポータルボタン以外の箇所で使用する

ポータルへの導線を独自に実装する場合は、下記の値を利用し、ポイント未獲得件数をユーザに示すようにしてください。 ユーザ自身にミッション機能に気づいてもらうために、必ず実装してください。 アプリのデザイン上などで難しい場合は、別途ご相談ください。

Swift

let unclaimedCount = RakutenReward.sharedInstance.getUser()?.getUnclaimed()

Objective-C

NSInteger unclaimeCount = [[[RakutenReward sharedInstance] getUser] getUnclaimed];

ポイント未獲得件数の表示例

※ポータルボタンをご利用でない場合、 リワードへの導線文言は上記画像のように「楽天リワー ド」と置いてください。 変更をご希望の際は、別途ご相談ください。

App Store へのアップロード時の設定について (XCFramework をご利用の場合は必要ありません)

SDK は実機及びシミュレータに対応した、ユニバーサルフレームワークの形式を取っています。 そのためアプリをアーカイブして iTunes Connect にアップロードする際、 simulator 用の architecture が 含まれていることによるエラーが発生する場合があります。 その際は下記のように simulator 用の architecture をビルドから除外する設定を追加してください。

  1. “Build Phases” を選択
  2. 左上の+ボタンからNew Run Script Phase を選択
  3. 下記のスクリプトを追加

※スクリプト内で使用している${TARGET_BUILD_DIR}等の環境変数がセットされていることをご確認ください。

script

⚠️ **GitHub.com Fallback** ⚠️