2016年3月24日 星期四

申請Apple Developer Program碰到的問題

Is awesome!
申請了Apple Developer Program(以前是叫iOS Developer Program),
也碰到了這個經典問題:

We are unable to activate your Apple Developer Program membership.


其實申請前也爬了一些文,像是姓名,住址與信用卡不同,或是填了中文資料等,
會讓申請很不順利。

所以我特別注意資料不要填錯,全程使用英文輸入,也收到了購買成功的訊息。
(疑?跟以前比好像更貴了,不過這不是重點)

接著就等收啟動信了,但等了一天沒收到。
於是登入會員中心後,就發現上面的錯誤訊息了,看時間客服都下班了。
明天再打電話去問吧,而且從頭到尾也沒收到啟動的通知

雖然很多文章都說留言或寄信沒用,不過我還是先用了線上回報,反應了這個問題。
結果隔天就收到信了,大意就是帳號已開通,可以使用。

反正帳號能用,所以最後連電話也不用打了,希望大家申請時比我順利。

2016年3月19日 星期六

cocos2d-X接入UnityAds(iOS版)

1.去官網註冊,取得廣告的GAME ID,並下載sdk,解壓縮後放好,選framework會用到,

2.在Xcode專案下的General->Linked Frameworks and Libraries增加以下項目
CFNetwork.framework
CoreFoundation.framework
UnityAds.bundle
UnityAds.framework
StoreKit.framework
AdSupport.framework
SystemConfiguration.framework
CoreTelephony.framework
CoreMedia.framework


3.在Xcode專案下的Build Settings->Search Paths->Framework Search Paths
加上UnityAds.Bundle所在的目錄,不然之後會出現UnityAds/UnityAds.h' file not found


4.修改AppController.h

#import <UIKit/UIKit.h>

#import <UnityAds/UnityAds.h>//<---新增這行

@class RootViewController;

//注意下面紅色新增的字符
@interface AppController : NSObject <UIApplicationDelegate,UnityAdsDelegate> {
    UIWindow *window;
}

@property(nonatomic, readonly) RootViewController* viewController;


@end

5.修改AppController.mm

先找到下面這幾行:
    // Use RootViewController manage CCEAGLView     _viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];    _viewController.wantsFullScreenLayout = YES;    _viewController.view = eaglView;

接著往後加這幾行(注意紅色的數字,替換成自己的廣告Game ID):
    //Unity Ads
    [[UnityAds sharedInstance] setTestMode:YES];//測試時打開
    [[UnityAds sharedInstance] setDebugMode:YES];//測試時打開
    [[UnityAds sharedInstance] startWithGameId:@"1234567" andViewController:_viewController];
    [[UnityAds sharedInstance] setDelegate:self];
然後在這個檔案找個合適的地方加上這個函式(廣告播完後會到這):
    - (void)unityAdsVideoCompleted:(NSString *)rewardItemKey skipped:(BOOL)skipped
    {
    
    }

6.增加UnityAdsWrapper.h到專案內(跟AppController.h放同目錄)
    class UnityAdsWrapper
    {
    public:
        static bool canShow();
        static void show();
    };

7.增加UnityAdsWrapper.mm到專案內(跟UnityAdsWrapper.h放同目錄)
    #import <Foundation/Foundation.h>
    #import <UnityAds/UnityAds.h>
    #import "UnityAdsWrapper.h"

    bool UnityAdsWrapper::canShow()
    {
        if ([[UnityAds sharedInstance] canShow] && [[UnityAds sharedInstance] canShowAds]) {
            return true;
        } else {
            return false;
        }
    }
    void UnityAdsWrapper::show()
    {
        [[UnityAds sharedInstance] show];
    }
    void UnityAdsWrapper::hide()
    {
        [[UnityAds sharedInstance] hide];
    }

8.然後就可以在模擬器測試了,別忘了加入#include "UnityAdsWrapper.h"
    然後用以下程式碼測試:
    if(UnityAdsWrapper::canShow()){
        UnityAdsWrapper::show();
    }