楽天リワードSDK iOS 導入手順 - RakutenReward/RakutenRewardSDK GitHub Wiki
SDKバージョン9.4.2よりXCFrameworkでのM1チップ搭載PCでのシミュレーターをサポートしております。
2022/03/31 にリリースをしたSDKバージョンを9.3ですが、
BitCode をオンにしていると iTunes よりサブミットした場合エラーが
起きることがわかっております。
こちらに関しては BitCode をオフしていただくことで対応が可能です。
2022/04/08 SDKを 9.4にアップデートしていただくことでこの問題は解消されます
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は、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を使用しております。
"RakutenRewardSDK.framework" を "Embed Framework" に追加する。
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
以下の依存関係を追加する
dependencies: [
.package(url: "https://github.com/Rakuten-Reward-SDK/Reward-SDK-iOS-SPM.git", .exact("12.0.0")),
]
Swift の Framework を読み込むために”Build Settings”で Swift のコンパイルに関する設定をする必要が あります。 “Always Embed Swift Standard Libraries” を Yes に設定します。
Objective-C での設定に加えて、Objective-C++ で Swift のヘッダーを読み込むのに必要な場合があり ます。(RewardSDK.h ではなく RewardSDK-Swift.h)
#import <RakutenRewardSDK/RakutenRewardSDK-Swift.h>
SDK を使用する上で、いくつかのドメインに対して ATS の設定が必要になります。 下記のドメイン に対して、ATS の例外設定を追加してください。 (こちらに設定している理由は広告主様のページがSSL設定をしていないケースがあるからです)
- jp
- net
SDK を組み込んだら、AppDelegate クラスに下記のコードを記載してください。 ※“**YOUR_APP_CODE”**の部分を開発者ポータルで発行したアプリケーションのApp Key に置き換えてください。
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")
}
}
#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 を引数として渡してください。
RakutenReward.sharedInstance.logAction(actionCode: "actionCode");
[[RakutenReward sharedInstance] logActionWithActionCode: @"actionCode"];
複数のアクションを連続で複数送信したい場合、送信の順序と達成の順番などを制御するために以下のメソッドの ご利用をお願いいたします。
RakutenReward.sharedInstance.logAction(actionCode: "actionCode", isQueueEnabled: true)
[RakutenReward.sharedInstance logActionWithActionCode:@"actionCode" isQueueEnabled:true];
RakutenReward.sharedInstance.logAction(actionCode: "actionCode") { logActionCallback in
}
ユーザがアクションを実行してミッションが達成されると、通知 UI が表示されます。 SDK は モーダル及びバナーの通知 UI を用意しています。
ミッション達成時の通知の方法は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
Light
ユーザがミッションを達成したもののポイントをまだ取得していない場合、未獲得となっている件 数が、ポータルボタン上に赤丸のバッジとして表示されます。バッジの位置はデフォルトでは右上 ですが、下記の方法で変更することも可能です。
ポータルボタンのカラータイプ、画像、バッジの位置は下記の方法で変更することが可能です。
@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
@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;
RakutenReward.sharedInstance.openPortal()
[[RakutenReward sharedInstance] openPortal];
ポータルへの導線を独自に実装する場合は、下記の値を利用し、ポイント未獲得件数をユーザに示すようにしてください。 ユーザ自身にミッション機能に気づいてもらうために、必ず実装してください。 アプリのデザイン上などで難しい場合は、別途ご相談ください。
let unclaimedCount = RakutenReward.sharedInstance.getUser()?.getUnclaimed()
NSInteger unclaimeCount = [[[RakutenReward sharedInstance] getUser] getUnclaimed];
※ポータルボタンをご利用でない場合、 リワードへの導線文言は上記画像のように「楽天リワー ド」と置いてください。 変更をご希望の際は、別途ご相談ください。
SDK は実機及びシミュレータに対応した、ユニバーサルフレームワークの形式を取っています。 そのためアプリをアーカイブして iTunes Connect にアップロードする際、 simulator 用の architecture が 含まれていることによるエラーが発生する場合があります。 その際は下記のように simulator 用の architecture をビルドから除外する設定を追加してください。
- “Build Phases” を選択
- 左上の+ボタンからNew Run Script Phase を選択
- 下記のスクリプトを追加
※スクリプト内で使用している${TARGET_BUILD_DIR}等の環境変数がセットされていることをご確認ください。