楽天リワード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を使用しております。

Unity Plugin とのパッケージバージョンと各OSのビルドについて

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プロジェクトに取り組んでください。

Import package

Import package

下記のように、Assets 内にプラグイン関連ファイルがインポートされたことを確認してください。

Import package

## バージョン1.0.8からの変更

iOSブリッジコードの変更 

バージョン1.0.7からのアップグレードをご利用の場合 iOS用のブリッジコード.mm は .m に変更になります。 .mm は削除していただきますようお願いします。 

RakutenRewardXcodeBuild.cs (XCodeのデフォルト設定の追加)

Unity 2017以上をご利用の場合このコードによりXCode内でのSwift Frameworkの設定を簡略化できます。

※ Unity5.xをご利用の場合は引き続き"Embedded binaries"の設定が必要になります

AppCodeの設定

プラグインを取り込みましたら、下記のように任意のGameObject に RakutenReward.cs をアタッチして iOS/Android の各 AppCode(開発者ポータルでのAppKey) を入力してください。

AppCode

初期化処理

下記のように、任意の箇所でRakutenReward クラスの GetInstance メソッドを呼び、リワードサービスの 初期化を行なってください。

public class Main : MonoBehaviour {
   void Start() {
       RakutenReward.GetInstance();
   }
}

ミッション達成について

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

アクション実行時

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

RakutenReward.getInstance().logAction(actionCode);

通知UI

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

Modal

Modal

通知タイプ

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

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

ポータルの表示

SDK はポータルと呼ばれる Web ページを用意しています。 ユーザはポータルにアクセスすることで、ミッションの情報や自身のポイント数等を確認することができます。 下記のメソッドを呼ぶこ とで、ポータルを表示させることができます。

※ リワード SDK ではユーザがミッションの達成状況などを確認するためにリワードポータルへアクセスする手段の提供をお願いしております

RakutenReward.GetInstance().OpenPortal();

ポイント未獲得件数について

ユーザがミッションを達成したもののポイントが未獲得となっている場合、ポイント未獲得件数を ユーザに示すようにしてください。ポイント未獲得件数は下記のように取得することができます。

int count = RakutenReward.GetInstance().GetUnclaimedCount();

iOS 向けの設定

リワードSDKの iOS は Swift Frameworkを使用しております。 それによりXCode側で設定が必要になります。

Embedded Frameworks の設定

Unity プロジェクトを iOS 向けにエクスポートしたら、下記のように Xcode 上にて”Embedded Frameworks”の欄に RakutenRewardSDK.framework を追加してください。

SDK Import

Swift Library の設定

下記のように Always Embed Swift Standard Libraries を YES に 設定してください。

ATSの設定

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

  • jp
  • net

Swift Libray

App Store へのアップロード時の設定

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

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

※スクリプト内で使用している${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       

Unity Plugin 1.1.1, XCode 12で iOSのアプリをビルドする場合

XCodeのプロジェクトにエクスポートした際に、RakutenRewardSDK.frameworkが 自動的に追加されなくなります。
手動での追加が必要です。

デフォルトでは、RakutenRewardSDK は含まれておりません。

XCode12Default

Framework folder > Plugins > iOS -> Embed the RakutenRewardSDK.framework このようにXCodeの設定からプラグインを Embed に追加します。

XCode 12 Added

Android 向けの設定

依存関係の設定

こちらはエクスポートプロジェクトで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'
}

ProGuardの設定 

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のアプリをUnityのみでビルドしたい

Android 向けの設定として一度 Android Studio のプロジェクトとしてエクスポートする方法を説明いたしましたが 以下の方法などでエクスポートすることなくビルドすることが可能です。 (Unityでビルドする場合、Androidの依存関係のappcompatを正しくインポートできません。 それを解消するために以下のような解決方法が 必要になります)

※ こちらにExternal Dependency Manager for Unity を使った方法の手順を記載しておりますのでご参照ください。 (Unity 2018での例) Unity Plugin Unity External Dependency Managerを使った Google ライブラリの依存関係解消について

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