楽天リワードSDK Unity Plugin 導入手順 - RakutenReward/RakutenRewardSDK GitHub Wiki
Unity Plugin 1.1.1をご利用の場合 XCode 12 以上になります。 設定が一部変更となります。(こちら)
楽天リワードSDK Unity Pluginは Unity 5.x バージョン以上をサポートしています。 楽天リワードSDKがサポートするプラットフォームは、Android, iOSとなり、各バージョンのサポートは以下のようになります。
プラットフォーム | サポート |
---|---|
Android | Android 4.1以上 |
iOS | iOS 8, Xcode 9.3 以上 |
- 2020/12/12 XCode 12以降をご利用の場合 1.1.1以降をご利用ください
- 2020/03/12 XCode 11以降のみのサポートになります。1.0.9以降は XCode 11をご利用ください 1.0.9ではSDKの組み込みはiOS 8から可能ですが、SDKの機能はiOS 11以上で有効です (iOS 8 - 10のユーザはSDKの機能を利用できません) 1.0.9からWKWebViewを使用しております。
Pluginバージョン | iOS | Android |
---|---|---|
1.4.0 | iOS Xcode 13, iOS 15 | Android X(API 33) |
1.3.0 | iOS Xcode 13, iOS 15 | Android X(API 29) |
1.2.0 | iOS Xcode 12, iOS 14 | Android X(API 29) |
1.1.1 | iOS XCode 12, iOS 14 | Android X(API 29) |
1.1.0 | iOS XCode 11, iOS 13 | Android X(API 29) |
1.0.10 | iOS XCode 11, iOS 13 | Android 9(API 28) |
下記のようにRakutenRewardSDKPlugin.unitypackageをダブルクリックし、ご自身のUnityプロジェクトに取り組んでください。
下記のように、Assets 内にプラグイン関連ファイルがインポートされたことを確認してください。
## バージョン1.0.8からの変更
バージョン1.0.7からのアップグレードをご利用の場合 iOS用のブリッジコード.mm は .m に変更になります。 .mm は削除していただきますようお願いします。
Unity 2017以上をご利用の場合このコードによりXCode内でのSwift Frameworkの設定を簡略化できます。
※ Unity5.xをご利用の場合は引き続き"Embedded binaries"の設定が必要になります
プラグインを取り込みましたら、下記のように任意のGameObject に RakutenReward.cs をアタッチして iOS/Android の各 AppCode(開発者ポータルでのAppKey) を入力してください。
下記のように、任意の箇所でRakutenReward クラスの GetInstance メソッドを呼び、リワードサービスの 初期化を行なってください。
public class Main : MonoBehaviour {
void Start() {
RakutenReward.GetInstance();
}
}
ミッションを達成するにはアクションを送信する必要があります。 またミッションが達成されると、通知UIが表示されます(通知UIは変更可能です)。
ユーザがアクションを行なったら、下記のメソッドを実行してください。 その際、ミッションに関連づけられた actionCode を引数として渡してください。
RakutenReward.getInstance().logAction(actionCode);
ユーザがアクションを実行してミッションが達成されると、通知 UI が表示されます。 SDK は モーダル及びバナーの通知 UI を用意しています。
ミッション達成時の通知の方法は4通りあります。上記のモーダル、バナーの通知 UI を表示するパ ターンに加えて、通知 UI を表示しない方式と、アプリ側で任意の通知 UI を設定する方法がありま す。これらは開発者ポータルでミッションを設定する際に定義することができます。
通知タイプ | UI |
---|---|
モーダル | SDKが用意したモーダルUIが表示されます |
バナー | SDKが用意したバナーUIが表示されます |
カスタム | 開発者側で任意のUIを設定できます |
通知なし | 通知UIは表示されません |
SDK はポータルと呼ばれる Web ページを用意しています。 ユーザはポータルにアクセスすることで、ミッションの情報や自身のポイント数等を確認することができます。 下記のメソッドを呼ぶこ とで、ポータルを表示させることができます。
※ リワード SDK ではユーザがミッションの達成状況などを確認するためにリワードポータルへアクセスする手段の提供をお願いしております
RakutenReward.GetInstance().OpenPortal();
ユーザがミッションを達成したもののポイントが未獲得となっている場合、ポイント未獲得件数を ユーザに示すようにしてください。ポイント未獲得件数は下記のように取得することができます。
int count = RakutenReward.GetInstance().GetUnclaimedCount();
リワードSDKの iOS は Swift Frameworkを使用しております。 それによりXCode側で設定が必要になります。
Unity プロジェクトを iOS 向けにエクスポートしたら、下記のように Xcode 上にて”Embedded Frameworks”の欄に RakutenRewardSDK.framework を追加してください。
下記のように Always Embed Swift Standard Libraries を YES に 設定してください。
SDK を使用する上で、いくつかのドメインに対して ATS の設定が必要になります。 下記のドメイン に対して、ATS の例外設定を追加してください。 (こちらに設定している理由は広告主様のページがSSL設定をしていないケースがあるからです)
- jp
- net
iOS SDK は実機及びシミュレータに対応した、ユニバーサルフレームワークの形式を取っていま す。そのためアプリをアーカイブして iTunes Connect にアップロードする際、simulator 用の architecture が含まれていることによるエラーが発生する場合があります。その際は下記のように simulator 用の architecture をビルドから除外する設定を追加してください。
- Xcodeの"Build Phase" を選択
- 左上の+ボタンから"New Run Script Phase" を選択
- 下記のスクリプトを追加
※スクリプト内で使用している${TARGET_BUILD_DIR}等の環境変数がセットされていることをご 確認ください ※ビルド後に Simulator でテストを行う際は、再度 Unity から Xcode へプロジェクトをエクスポート してください
# Type a script or drag a script file from your workspace to insert its path.
#!/bin/sh
# This script loops through the SDK embedded in the application and removes simulator's architectures.
# Output environment variables
env > env.txt
# SDK search path for project source directory
APP_PATH_SRC="${PROJECT_DIR}"
# SDK search path for build destination directory
APP_PATH_DST="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
echo "APP_PATH_SRC: $APP_PATH_SRC"
echo "APP_PATH_DST: $APP_PATH_DST"
# Search SDK from destination path first. If not found, search from source path.
find "$APP_PATH_DST" "$APP_PATH_SRC" -name 'RakutenRewardSDK.framework' -type d | while read -r FRAMEWORK
do
echo "FRAMEWORK: $FRAMEWORK"
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
# If SDK found in destination path, no need to proceed to next loop.
break
done
XCodeのプロジェクトにエクスポートした際に、RakutenRewardSDK.frameworkが
自動的に追加されなくなります。
手動での追加が必要です。
デフォルトでは、RakutenRewardSDK は含まれておりません。
Framework folder > Plugins > iOS -> Embed the RakutenRewardSDK.framework このようにXCodeの設定からプラグインを Embed に追加します。
こちらはエクスポートプロジェクトでAndroid Studioのプロジェクトにエクスポートした上での設定になります。 Unityから直接ビルドされる場合は、別途下部(AndroidのアプリをUnityのみでビルドしたい)を参照してください。 AndroidSDKでは、AppCompatActivityを使用しているため、下記のようにbuild.gradleのdependencies appcompat-v7を追加します。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) compile(name: 'RakutenRewardUnity-release', ext:'aar') compile 'com.android.support:appcompat-v7:25.2.0'
}
Android 10 以降(パーッケージバージョン 1.1.0)はこちらの設定に変わります。 詳細はこちらです(Unity Android 10 gradle について)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) compile(name: 'RakutenRewardUnity-release', ext:'aar') compile 'androidx.appcompat:appcompat:1.0.0'
}
SDK の一部のコードに対し ProGuard の例外設定を行う必要があるため、 下記を ProGuard 設定ファイル (例: proguard-user.txt) に追記し、 Assets/Plugins/Android 下に配置してください(サンプルアプリ参照)。
-keepattributes *Annotation*
-keepattributes Signature
-keep class jp.co.rakuten.reward.rewardsdk.api.** {
public <fields>;
public <methods>;
}
-keep public enum jp.co.rakuten.reward.rewardsdk.api.status.** { **[] $VALUES;
public *;
}
Google Play Service SDK をご使用でない場合、上記に加えて下記を 追記してください。
-dontwarn jp.co.rakuten.reward.rewardsdk.**
Android 向けの設定として一度 Android Studio のプロジェクトとしてエクスポートする方法を説明いたしましたが 以下の方法などでエクスポートすることなくビルドすることが可能です。 (Unityでビルドする場合、Androidの依存関係のappcompatを正しくインポートできません。 それを解消するために以下のような解決方法が 必要になります)
- Unity gradle の設定をオーバライドする
- External Dependency Manager for Unityを使って Googleのライブラリの依存を解消する
※ こちらにExternal Dependency Manager for Unity を使った方法の手順を記載しておりますのでご参照ください。 (Unity 2018での例) Unity Plugin Unity External Dependency Managerを使った Google ライブラリの依存関係解消について