Skip to content

iOSアクセス文書

リソースダウンロードおよび説明

-国内SDKリソースios_platform_sdk.zip

-海外SDKリソースios_global_platform_sdk.zip

共通リソース(導入必須)

ios_platform_sdk/access_core フォルダのすべてのリソースをプロジェクトに導入する(基本、支払シーケンス図

モジュールリソース説明

国内SDKモジュール

  • libplatform-account-sdk.a —— アカウントモジュール(SDKコアモジュール、) アカウントモジュール
  • libplatform-block-account.a —— 国内ログインモジュール() 国内ログイン
Objective-C
libplatform-pay-sdk.a —— 支払モジュール 
libplatform-applelogin.a —— Appleログインモジュール 
libplatform-wechatlogin.a —— WeChatログインモジュール 
libplatform-qqlogin.a —— QQログインモジュール 
libplatform-crashsight.a —— CrashSightモジュール 
libplatform-bugly.a —— Buglyモジュール 
libplatform-qqshare.a —— QQシェアモジュール 
libplatform-wechatshare.a —— WeChatシェアモジュール 
libplatform-appsflyer.a —— appsflyerモジュール 
libplatform-analysys.a —— 方舟モジュール

海外SDKモジュール

libplatform-account-sdk.a —— アカウントモジュール(SDKコアモジュール、) 国内ログイン libplatform-global-account.a ---- 海外ログインモジュール() 国内ログイン

Objective-C
libplatform-alhelpservice.a —— カスタマーサービスモジュール 
libplatform-analysys.a —— 方舟モジュール 
libplatform-applelogin.a—— Appleログインモジュール 
libplatform-appsflyer.a —— AppsFlyerモジュール 
libplatform-cloudlogproducer.a —— ネットワーク送信モジュール 
libplatform-crashsight.a —— CrashSightモジュール 
libplatform-facebooklogin.a —— FaceBookログインモジュール 
libplatform-facebookshare.a —— FaceBookシェアモジュール 
libplatform-firebase.a —— Firebaseモジュール 
libplatform-googlelogin.a —— Googleログインモジュール 
libplatform-openinstall.a —— Openinstallモジュール 
libplatform-pay-sdk.a —— ApplePayモジュール

モジュール導入および設定説明()

  • モジュールを導入する前に必ずプロジェクトInfo->URL Types->URL Schemes で accesssdk+channelIdを設定すること。そうしないと初期化が失敗する!
  • channelIdは運営から取得する必要がある

設定導入

注意

QQログインモジュール、QQシェアモジュールに同時にアクセスする場合、対応するモジュールフォルダlibsにはそのうちの一つだけを導入すればいい。WeChatログインとWeChatシェアモジュール、FacebookログインモジュールとFacebookシェアモジュールも同様。

infoで対応する View controller-based status bar appearance 権限を YESに設定する必要がある

info

SDKアクセス環境構築

システムframework導入

ゲームプロジェクトに以下のシステムFrameworkを追加してください

Objective-C
StoreKit.framework 
WebKit.framework 
Network.framework 
SystemConfiguration.framework 
AppTrackingTransparency.framework 
AdSupport.framwork 
CoreTelephony.framework 
iAd.framework 
AdServices.framework 
libz.tbd libc++.tbd 
libresolv.tbd

注意

国内ログインモジュールlibplatform-block-account.aを導入した場合、libplatform-block-accountが依存する第三者のライブラリーを再度導入する必要がある

共通リソースをプロジェクトに導入する

共通リソース導入方法

共通リソースをプロジェクトパネルにドラッグし、ポップアップの選択ボックスで図1-1のように選択する(Copy items if neededにチェックを入れることがおすすめ)

設定ファイルを導入する

  • ファイル名:access.config
  • 設定ファイル導入方法: 共通リソース導入と同様
  • リソースは運営から取得する

プロジェクトパラメータ設定

  • info.plistファイルに以下の設定を追加する(IDFA権限の取得を申請するため:説明は通常:'ゲーム名'があなたのデバイス識別子(IDFA)にアクセスし、広告追跡に利用したい)。図の通り:
  • プロジェクトtargetをクリックし、Build Setting tabを選択し、Other Linker Flagsを検索し、ダブルクリック後に「+」をクリックし、-ObjCとして追加すればいい。追加済みの場合は追加不要。効果は図1-2の通り
  • Info.plistでPrivacy - Photo Library Additions Usage Description項目を設定し、タイプはStringを選択し、値は:あなたのアルバムにアクセスします
  • Info.plistでPrivacy - Photo Library Usage Description項目を設定し、タイプはStringを選択し、値は:スクリーンショットはアルバムに保存されます

Info.plistでhttpネットワークアクセスのサポートを設定し、App Transport Security Settings項目を設定し、タイプはDictoionary。そしてサブ項目Allow Arbitrary Loadsを設定し、タイプはBoolean、値はYes

AccessCore SDK基本機能

アクセス環境の設定が完了し、SDKライブラリとファイル設定を導入したあと、SDKの各機能のアクセスを開始できます

ヒント

SDKインタフェースの国内モジュールと海外モジュールインタフェースは共通です。(海外)のマークがある場合は海外呼出のみであり、国内モジュールが呼び出しても効果はないです

SDK初期化

SDKヘッダファイルを導入する

Objective-C
#import <platform_core_sdk/platform_core_sdk.h>

appDelegeta.hでAccessCoreAppDelegateを継承する。下図の通り:

-SDK初期化 delegate必要 HLSystemDelegate,HLPaymentDelegate,HLAccountDelegate,HLShareCallback 代理コールバックは必要に応じてアクセスする。具体的な方法は後述の説明を参照

Objective-C
@interface SDKDelegate : AccessCoreAppDelegate<HLSystemDelegate,HLPaymentDelegate,HLAccountDelegate,HLShareCallback> 
@interface AppDelegate () 
@end

@implementation SDKDelegate
@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 
   self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
   self.window.backgroundColor = [UIColor whiteColor]; 
   self.window.rootViewController = [[DemoController alloc]init];
   [self.window makeKeyAndVisible];
      
   [AccessCoreSdk shareAccessCoreSdkManage].systemDelegate = self; 
   [AccessCoreSdk shareAccessCoreSdkManage].paymentDelegate = self; 
   [AccessCoreSdk shareAccessCoreSdkManage].accountDelegate = self; 
   [AccessCoreSdk shareAccessCoreSdkManage].shareDelegate = self;
   
   return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
}

代理コールバック方法

Objective-C
@protocol HLSystemDelegate <NSObject>

/**
 * 初期化成功 
 */ 
- (void)initSuccess:(AccessInitResult *)initResult;

/** 
 * 初期化失敗
 */ 
- (void)initFailed;

@end

@protocol HLPaymentDelegate <NSObject>

/** 
 * 支払成功 
 */
 - (void)paySuccess;

/**
 * 支払失敗
 * @param error エラー情報 
 */ 
- (void)payError:(NSError *)error;

@optional 
/** 
 * 商品情報取得 
 * @param info 商品情報 
 */ 
- (void)payGoodsList:(NSArray <AccessGoodsInfo *>*)info;

/** 
 * 商品情報取得失敗 
 */ 
- (void)payGpodsListFail;

@end

@protocol HLAccountDelegate <NSObject>

/** 
 * ログイン成功 * @
 param accountInfo ログイン成功情報 
 */ 
- (void)loginSuccess:(AccessLoginInfo *)accountInfo;

/** 
 * サブアカウント切替成功 * 
 @param refreshAccountInfo ログイン成功情報 
 */ 
- (void)refreshUser:(AccessLoginInfo *)refreshAccountInfo;

/** 
 * ログイン失敗 
 */ 
- (void)loginFailure;

/** 
 * ログアウト 
 */ 
- (void)logout;

@end

@protocol HLShareCallback <NSObject>

/** 
 * シェア成功 
 */ 
- (void)shareSucceeded:(BOOL)result;

/** 
 * シェア失敗 
 */ 
- (void)shareFailed:(BOOL)result;
  • AccessInitResult の対応するプロパティ
Objective-C
@property (nonatomic, strong) NSString *channel; //チャンネル 
@property (nonatomic, assign) int gameId; // 游戏ID 
@property (nonatomic, assign) int channelId; // チャンネルID
  • AccessLoginInfo の対応するプロパティ
Objective-C
@property (nonatomic, assign) long long uid; 
@property (nonatomic, strong) NSString *accessToken; // ユーザー権限授与token 
@property (nonatomic, strong) NSString *channel; // チャンネル 
@property (nonatomic, strong) NSString *channelUid DEPRECATED_MSG_ATTRIBUTE("このプロパティは廃棄した~"); // チャンネルユーザーID 
@property (nonatomic, strong) NSString *serverArea; // エリア

@property (nonatomic, strong) NSMutableDictionary *extendInfo; //拡張パラメータ

ライフサイクルインタフェース

SDKに必要なライフサイクル方法を実現する。super 親クラスを呼び出す方法に注意すること。

Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
}

- (void)applicationWillResignActive:(UIApplication *)application { 
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
[super applicationWillResignActive:application];
}

- (void)applicationDidEnterBackground:(UIApplication *)application { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. [super applicationDidEnterBackground:application]; }

- (void)applicationWillEnterForeground:(UIApplication *)application { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. [super applicationWillEnterForeground:application]; }

- (void)applicationDidBecomeActive:(UIApplication *)application { 
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
[super applicationDidBecomeActive:application]; 
}

- (void)applicationWillTerminate:(UIApplication *)application { 
[super applicationWillTerminate:application]; 
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { 
return [super application:app openURL:url options:options]; 
};

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
[super application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { 
[super application:application didReceiveLocalNotification:notification]; 
}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { 
[super application:application didRegisterUserNotificationSettings:notificationSettings]; 
}

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler{
[super application:application handleActionWithIdentifier:identifier forRemoteNotification:userInfo completionHandler:^{ }]; 
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
[super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 
[super application:app didFailToRegisterForRemoteNotificationsWithError:err]; 
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
[super application:application didReceiveRemoteNotification:userInfo]; 
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 
[super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; 
}

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ 
[super application:application supportedInterfaceOrientationsForWindow:window]; 
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler{ 
return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; 
}


### SDKログインインタフェース
```Objective-C 
/** 
 * ログイン 
 */ 
 -void)login; 
 [[AccessCoreSdk shareAccessCoreSdkManage] login];//このインタフェースはログインコールバックをトリガーする
注:ログアウトしていない場合、ゲーム内での複数のコールバックを避けるため、ログインインタフェースを再度呼び出してはならない

SDKログアウトインタフェース

Objective-C
/** 
 * ログアウト 
 */ 
-void)logout; 
[[AccessCoreSdk shareAccessCoreSdkManage] logout];
注:ログアウトが成功すると、ログアウトコールバックインタフェースをトリガーする(海外SDK呼出は無効)

SDK報告インタフェース

Objective-C
/** 
 * ユーザー情報をSDKに報告する 
 * @param type 報告するデータタイプ 
 * @param info ユーザー情報は空であってはならない 
 */ 
- (void)report:(EventType)type data:(AccessPlayerInfo *)info; 
- (void)setUserExtDataType:(EventType)type data:(AccessPlayerInfo *)userExtData DEPRECATED_MSG_ATTRIBUTE("Please use -report:info:");

/** 
 * カスタムデータ送信 
 * @param action イベント名、空またはnullであってはならない 
 * @param gameinfo 送信する拡張情報 
 */ 
- (void)gameDataReport:(NSString *)action withGameInfo:(NSMutableDictionary *)gameinfo
Objective-C
AccessPlayerInfo *model = [AccessPlayerInfo new]; 
model.zone_id = @"12312"; 
model.zone_name = @"大エリアテスト"; 
model.server_id = @"11212"; 
model.server_name = @"サーバー名テスト"; 
model.role_id = @"229"; 
model.role_name = @"テストチーム"; 
model.role_level = @"10"; 
model.party_name = @"10"; 
model.vip = @"100"; 
model.balance = @"200"; 
model.extene_action = @"test_action"; 
[model addExtra:@"intKey" intValue:55]; 
[model addExtra:@"longLongKey" doubleValue:66786658787676]; 
[model addExtra:@"stringKey" NSStringValue:@"Hello111"]; 
[model addExtra:@"test1" NSStringValue:@"11"]; 
[model addExtra:@"test2" NSStringValue:@"22"]; 
[model addExtra:@"test3" NSStringValue:@"33"]; 
[model addExtra:@"gameResourceUrl" NSStringValue:@"tcp@github.com@9988"]; 
[model addExtra:@"gameLoginServerUrl" NSStringValue:@"http@platforrrrm.hoolai.com/test/index@9900"]; 
[model addExtra:@"gameServerUrl" NSStringValue:@"https@191.45.90.89@8087"]; 
[model addExtra:@"userLogo" NSStringValue:@"https%3A%2F%2Fimg2.baidu.com%2Fit%2Fu%3D3172931140%2C714963860%26fm%3D253%26fmt%3Dauto%26app%3D138%26f%3DJPEG%3Fw%3D500%26h%3D500"]; 
[model addExtra:@"action11" NSStringValue:@"222"]; 
[model addExtra:@"44" intValue:55]; 
[[AccessCoreSdk shareAccessCoreSdkManage] report:<EventType> data:model]; ```

>- AccessPlayerInfo対応するパラメータおよび方法: 

```Objective-C 
@property (nonatomic, strong) NSString *server_name; //サービス名 
@property (nonatomic, strong) NSString *zone_id; // エリアID 
@property (nonatomic, strong) NSString *zone_name;//エリア名 
@property (nonatomic, strong) NSString *server_id;//サービスID 
@property (nonatomic, strong) NSString *role_id;//キャラID 
@property (nonatomic, strong) NSString *role_name;//キャラ名 
@property (nonatomic, strong) NSString *role_level;//キャラレベル 
@property (nonatomic, strong) NSString *party_name;//ギルド名 
@property (nonatomic, strong) NSString *vip; //vip 
@property (nonatomic, strong) NSString *balance;//残高 
@property (nonatomic, strong) NSString *phylum;//分類/手順 
@property (nonatomic, strong) NSString *classfield;//行動結果 
@property (nonatomic, strong) NSString *extene_action;//ポイント名

@property (nonatomic, strong, readonly) NSString *extra DEPRECATED_MSG_ATTRIBUTE(" addExtra: を使ってカスタム送信をしてください。");//拡張情報 連結___例:@"key:value,key:value...."


/** 
 * カスタムデータ送信 
 * @param key イベント名、空またはnullであってはならない 
 * @param val 送信する情報 タイプ:int 
 */ 
- (void)addExtra:(NSString*)key intValue:(int)val;

/** 
 * カスタムデータ送信 
 * @param key イベント名、空またはnullであってはならない 
 * @param val 送信する情報 タイプ:double 
 */ 
- (void)addExtra:(NSString*)key doubleValue:(double)val;

/** 
 * カスタムデータ送信 
 * @param key イベント名、空またはnullであってはならない 
 * @param val 送信する情報 タイプ:NSString 
 */ 
- (void)addExtra:(NSString*)key NSStringValue:(NSString *)val;
  • AccessPlayerInfo の対応する addExtra:を使ってカスタム送信をしてください。 カスタム送信方法コード参考例
Objective-C
AccessPlayerInfo *model = [AccessPlayerInfo new]; 
[model addExtra:@"intKey" intValue:55]; 
[model addExtra:@"longLongKey" doubleValue:66786658787676]; 
[model addExtra:@"stringKey" NSStringValue:@"Hello111"]; 
model.extene_action = @"test_open_app"; 
[[AccessCoreSdk shareAccessCoreSdkManage] report:ACCESS_CUSTOMER_ACTION data:model];

支払インタフェース

Objective-C
/** 
 * 商品情報取得 
 */ 
- (void)queryGoodsInfo;

/** 
 * 支払開始 
 */ 
- (void)pay:(AccessBeginPayInfo *)goodsModel;

>注: queryGoodsInfo 方法で対応する戻りを呼び出すパラメータの場所は HLPaymentDelegate
Objective-C
@optional 
/**
 *  商品情報取得
 * @param info 商品情報 
 */
- (void)payGoodsList:(NSArray <AccessGoodsInfo *>*)info;

/** 
 * 商品取得失敗 
 */ 
- (void)payGpodsListFail;
  • AccessGoodsInfo の対応するプロパティ
Objective-C
@property (nonatomic, strong) NSString *region; //地域 
@property (nonatomic, strong) NSString *currency; //通貨 
@property (nonatomic, strong) NSString *symbol; //商品符号 
@property (nonatomic, strong) NSString *itemId; //商品id 
@property (nonatomic, strong) NSString *itemName; //商品名 
@property (nonatomic, strong) NSString *itemCount; //商品数 
@property (nonatomic, strong) NSString *itemPrice; //商品価格 
@property (nonatomic, strong) NSString *showTag; //展示tag(価格フォーマット)
  • pay: 方法呼出で伝えるべきAccessBeginPayInfoの対応するプロパティ:
Objective-C
@property (nonatomic, assign) int price; //価格 
@property (nonatomic, strong) NSString *finalPrice DEPRECATED_MSG_ATTRIBUTE("このプロパティは廃棄した~"); //支払価格 
@property (nonatomic, strong) NSString *productIdentifier;//商品ID 
@property (nonatomic, strong) NSString *currencyLocale; //通貨エリア 
@property (nonatomic, strong) NSString *payChannel DEPRECATED_MSG_ATTRIBUTE("このプロパティは廃棄した~");//支払チャンネル 
@property (nonatomic, strong) NSString *gameInfo; //ゲーム情報 
@property (nonatomic, strong) NSString *notifyUrl; //コールバックurl

CDKインタフェース

Objective-C
/** 
 * CDKインタフェース取得 
 * activityType イベントタイプ 
 * activityDataType AccessActivityDataInfo作成 cdkに必要なcodeを伝える 
 */ 
- (void)accessParticipate:(ACTIVITY_TYPE)activityType ActivityDataType:(AccessActivityDataInfo*)activityDataType;
  • CDKに必要なパラメータ ACTIVITY_TYPE枚挙パラメータ
Objective-C
typedef enum _ACTIVITY_TYPE { 
ACCESS_NO_ACTIVITY = 0, // イベントなし 
ACCESS_CD_KEY, // cdk タイプ 
} ACTIVITY_TYPE;
  • AccessActivityDataInfoの対応するプロパティ:
Objective-C
@interface AccessActivityDataInfo : NSObject 
@property (nonatomic, strong) NSString *code; 
@end

シェアインタフェース

Objective-C
/* 
 *ヒント:シェアでは1種類のシェアモードしか選択できない。テキストと画像は一緒にシェアできない(懂球帝のシェアを除く)。AccessShareInfoを作成し、対応するプロパティに値を与えればいい。 
 * type 分享平台类型 * object プラットフォームの内容をシェアする 
 */ 
- (void)shareType:(THREE_SHARE_TYPE)type shareObject:(AccessShareInfo *)object; ```

>- AccessShareInfo の対応するプロパティ 注: 懂球帝のシェアには関連の代理コールバックがない 
```Objective-C 
typedef enum _THREE_SHARE_TYPE { 
ACCESS_SCENESESSION = 0, // WeChat友達 
ACCESS_SCENETIMELINE, // WeChatモーメンツ 
ACCESS_SCENEQQTOSESSION, // QQ友達 
ACCESS_SCENEQQTOQZONE, // QQスペース 
ACCESS_DONGQIUDI, // 懂球帝 
ACCESS_FACEBOOK_LINK, // facebookリンクシェア(海外) 
ACCESS_FACEBOOK_IMAGE, // facebook画像シェア(海外) 
ACCESS_FACEBOOK_VIDEO, // facebook動画シェア(海外) 
ACCESS_APPLE_SHARE // appleシェア(海外) 
} THREE_SHARE_TYPE;
Objective-C
@interface AccessDongQiuDiShare : NSObject 
@property (nonatomic, strong) NSString *circleID; // サークル 
@property (nonatomic, strong) NSString *title; // タイトル 
@property (nonatomic, strong) NSString *content; // シェアする内容 
@property (nonatomic, strong) NSString *scheme; // 自分のプロジェクトscheme、ジャンプに使う 
@property (nonatomic, strong) NSArray<NSString *> *assetIDs; // 画像または動画のアドレス(アルバム) 
@end

@interface AccessShareInfo : NSObject
@property (nonatomic, strong) NSString *title; // タイトル 
@property (nonatomic, strong) NSString *imagePath; // 画像/動画アドレス 注意:Facebook写真をシェアする場合、写真サイズは 12MB より小さくなければならない。Facebook動画をシェアする場合、動画サイズは 50MB より小さくなければならない。
@property (nonatomic, strong) NSString *linkPath; // シェアするリンクのアドレス

@property (nonatomic, strong) AccessDongQiuDiShare *shareDongQiuDi;//懂球帝のシェア @end ```

### アカウント管理センターを開く(海外)
```Objective-C 
/* 
 *アカウント管理センターを開く(海外) 
 */ 
- (void)openAccountCenter;

カスタマーサービスセンターを開く(海外)

Objective-C
/* 
 *カスタマーサービスセンターを開く(海外) 
 */ 
- (void)openService;

国内アクセス必須モジュール

Apple Payモジュール

現在のlibplatform-payフォルダに導入する

そして、関連のApplePayログイン権限を設定し、プロジェクトでAppleログイン項目を設定する。図の通り:

CrashSightモジュール

現在のaccess_crashsightフォルダに導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)
  • 依存ライブラリSystemConfiguration.frameworkを追加する
  • Security.framework
  • libz.dylib または libz.tdb
  • libc++.dylib または libc++.tdb(エラーがなければ追加しなくてもいい)

アクセス結果テスト
a. Debugモードを起動し、CrashSightを初期化し、適切な設定パラメータを与える
b. オンライン報告:テストデバイスのログに“begin to upload <CSAnalyticsLogic” または “cmd: 641”がプリントアウトされているかをチェックする
c. クラッシュキャプチャ:テストデバイスのログに“Handle the crash scene in callback”がプリントアウトされているかをチェックする
d. 異常報告:テストデバイスのログに“begin to upload <CSCrashLogic” または “cmd: 631”がプリントアウトされているかをチェックする

Appleログインモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)
  • そして、関連のAppleログイン権限を設定し、プロジェクトでAppleログイン項目を設定する。図の通り:

システム依存ライブラリを追加する

  • AuthenticationServices.framework

QQログインモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを追加する

  • CoreGraphics.framework
  • CoreTelephony.framework
  • Foundation.framework
  • libc++.tbd
  • libiconv.tbd
  • libsqlite3.tbd
  • Security.framework
  • SystemConfiguration.framework
  • WebKit.framework

Info.plistでLSApplicationQueriesSchemesを追加し、対応するホワイトリストを追加する

xml
<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>tim</string> 
<string>mqq</string> 
<string>mqqapi</string> 
<string>mqqbrowser</string> 
<string>mttbrowser</string> 
<string>mqqOpensdkSSoLogin</string> 
<string>mqqopensdkapiV2</string> 
<string>mqqopensdkapiV4</string> 
<string>mqzone</string> 
<string>mqzoneopensdk</string> 
<string>mqzoneopensdkapi</string> 
<string>mqzoneopensdkapi19</string> 
<string>mqzoneopensdkapiV2</string> 
<string>mqqapiwallet</string> 
<string>mqqopensdkfriend</string> 
<string>mqqopensdkavatar</string> 
<string>mqqopensdkminiapp</string> 
<string>mqqopensdkdataline</string> 
<string>mqqgamebindinggroup</string> 
<string>mqqopensdkgrouptribeshare</string> 
<string>tencentapi.qq.reqContent</string> 
<string>tencentapi.qzone.reqContent</string> 
<string>mqqthirdappgroup</string> 
<string>mqqopensdklaunchminiapp</string> 
<string>mqqopensdkproxylogin</string> 
<string>mqqopensdknopasteboard</string> 
</array>

WeChatログインモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

Info.plistでLSApplicationQueriesSchemesを追加し、対応するホワイトリストを追加する。WeChatの対応するホワイトリスト:

  • wechat
  • weixinULAPI
  • weixin
xml
<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>wechat</string> 
<string>weixinULAPI</string> 
<string>weixin</string> 
</array>

国内の選択可能なモジュールのアクセス

Buglyモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

依存ライブラリを追加する

  • SystemConfiguration.framework
  • Security.framework
  • libz.dylib または libz.tbd
  • libc++.dylib または libc++.tbd

懂球帝のシェア

サンプルコード

Objective-C
[[AccessCoreSdk shareAccessCoreSdkManage]shareType:ACCESS_DONGQIUDI shareObject:[self dongqiudiShare]];
Objective-C
- (AccessShareInfo *)dongqiudiShare{ 
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); 
// UIImage *image = [UIImage imageNamed:@"res2.jpg"]; 
NSURL *videoURL = [NSURL fileURLWithPath:[NSBundle.mainBundle pathForResource:@"res3" ofType:@"MP4"]]; 
__block AccessShareInfo *sharemodel = [AccessShareInfo new]; 
__block PHObjectPlaceholder *imagePlaceholder; 
__block PHObjectPlaceholder *videoPlaceholder; 
NSMutableArray<NSString *> *identifiers = [NSMutableArray array]; [
[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
// imagePlaceholder = [PHAssetCreationRequest creationRequestForAssetFromImage:image].placeholderForCreatedAsset; 
videoPlaceholder = [PHAssetCreationRequest creationRequestForAssetFromVideoAtFileURL:videoURL].placeholderForCreatedAsset; 
} completionHandler:^(BOOL success, NSError * _Nullable error) { 
NSLog(@"save result = %@, error = %@", @(success), error); 
if (!success) { 
return; 
} // 
if (imagePlaceholder) { 
// [identifiers addObject:imagePlaceholder.localIdentifier]; 
// } 
if (videoPlaceholder) { 
[identifiers addObject:videoPlaceholder.localIdentifier]; 
} 
NSLog(@"identifiers = %@", identifiers); 
AccessDongQiuDiShare *dognqiudi = [AccessDongQiuDiShare new]; 
dognqiudi.circleID = @"123"; dognqiudi.title = @"テストシェアタイトル"; 
dognqiudi.content = @"私はシェア内容です"; 
dognqiudi.scheme = @"demo"; 
dognqiudi.assetIDs = identifiers; 
sharemodel.shareDongQiuDi = dognqiudi; 
dispatch_semaphore_signal(semaphore); 
}]; 
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); 
return sharemodel; 
}

WeChatシェアモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

Info.plistでLSApplicationQueriesSchemesを追加し、対応するホワイトリストを追加する。WeChatの対応するホワイトリスト:

  • wechat
  • weixinULAPI
  • weixin
xml
<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>wechat</string> 
<string>weixinULAPI</string> 
<string>weixin</string> 
</array>

サンプルコード

Objective-C
// WeChat友達 
[[AccessCoreSdk shareAccessCoreSdkManage]shareType:ACCESS_SCENESESSION shareObject:[self startShareType]]; 
//WeChatモーメンツ 
[[AccessCoreSdk shareAccessCoreSdkManage]shareType:ACCESS_SCENETIMELINE shareObject:[self startShareType]];
Objective-C
- (AccessShareInfo *)startShareType{ 
UIImage *iamge = [UIImage imageNamed:@"res2.jpg"]; 
NSString *path_sandox = NSHomeDirectory(); 
NSString *imagePath = [path_sandox stringByAppendingString:@"/Documents/test.png"];
[UIImagePNGRepresentation(iamge) writeToFile:imagePath atomically:YES]; 
AccessShareInfo *sharemodel = [AccessShareInfo new]; 
if (self.shareText.text.length){ 
sharemodel.title = self.shareText.text; 
}else{ 
sharemodel.imagePath = imagePath;
} 
return sharemodel; 
}

QQシェアモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを追加する

  • CoreGraphics.framework
  • CoreTelephony.framework
  • Foundation.framework
  • libc++.tbd
  • libiconv.tbd
  • libsqlite3.tbd
  • Security.framework
  • SystemConfiguration.framework
  • WebKit.framework

Info.plistでLSApplicationQueriesSchemesを追加し、対応するホワイトリストを追加する

xml
<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>tim</string> 
<string>mqq</string> 
<string>mqqapi</string> 
<string>mqqbrowser</string> 
<string>mttbrowser</string> 
<string>mqqOpensdkSSoLogin</string> 
<string>mqqopensdkapiV2</string> 
<string>mqqopensdkapiV4</string> 
<string>mqzone</string> 
<string>mqzoneopensdk</string> 
<string>mqzoneopensdkapi</string> 
<string>mqzoneopensdkapi19</string> 
<string>mqzoneopensdkapiV2</string> 
<string>mqqapiwallet</string> 
<string>mqqopensdkfriend</string> 
<string>mqqopensdkavatar</string> 
<string>mqqopensdkminiapp</string> 
<string>mqqopensdkdataline</string> 
<string>mqqgamebindinggroup</string> 
<string>mqqopensdkgrouptribeshare</string> 
<string>tencentapi.qq.reqContent</string> 
<string>tencentapi.qzone.reqContent</string> 
<string>mqqthirdappgroup</string> 
<string>mqqopensdklaunchminiapp</string> 
<string>mqqopensdkproxylogin</string> 
<string>mqqopensdknopasteboard</string> 
</array>

サンプルコード

Objective-C
// QQ友達 
[[AccessCoreSdk shareAccessCoreSdkManage]shareType:ACCESS_SCENEQQTOSESSION shareObject:[self startShareType]]; 
//QQスペース 
[[AccessCoreSdk shareAccessCoreSdkManage]shareType:ACCESS_SCENEQQTOQZONE shareObject:[self startShareType]];
Objective-C
- (AccessShareInfo *)startShareType{ 
UIImage *iamge = [UIImage imageNamed:@"res2.jpg"]; 
NSString *path_sandox = NSHomeDirectory(); 
NSString *imagePath = [path_sandox stringByAppendingString:@"/Documents/test.png"];
[UIImagePNGRepresentation(iamge) writeToFile:imagePath atomically:YES]; 
AccessShareInfo *sharemodel = [AccessShareInfo new]; 
if (self.shareText.text.length){ 
sharemodel.title = self.shareText.text; 
}else{ 
sharemodel.imagePath = imagePath; 
} 
return sharemodel; 
}

appsflyerrモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを導入する

  • AdSupport.frameworkを追加する
  • iAd.framework

あなたのマーケティングスタッフからOneLinkサブドメインを取得する

  • Xcodeで、あなたのプロジェクトをクリックする
  • プロジェクトの目標をクリックする(下のスクリーンショットをご参照ください)
  • 機能タブに切り替える
  • 関連ドメインを開く
  • マーケティングスタッフから取得したサブドメインを追加する
  • フォーマットはapplinks:xxxxxxxxx.onelink.me

方舟送信モジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

使用方法はSDK報告インタフェースを参考する

Objective-C
- (void)report:(EventType)type data:(AccessPlayerInfo *)info; 
- (void)setUserExtDataType:(EventType)type data:(AccessPlayerInfo *)userExtData DEPRECATED_MSG_ATTRIBUTE("Please use -report:info:");

ネットワーク検出モジュール

ios-platform-cloudlogproducerの全てのファイルを導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

BuiID Phases - > Link binary With Libraries 以下にStatus->RequiredをOptionalに変更する

機能実現は報告インタフェースと同様です。詳細なルールはこちらをご参考ください:クライアントデータ報告

ヘッドライン送信モジュール ios-platform-ttsdkの全てのファイルを導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)
  • Build->New Copy Files Phase->Destinationを作成する。作成が完了したあと、図の通りに Frameworks を設定し、ドラッグした framework パッケージを Name ディレクトリに入れる:

海外アクセス必須モジュール

Apple Payモジュール

現在のlibplatform-payフォルダに導入する

そして、関連のApplePayログイン権限を設定し、プロジェクトでAppleログイン項目を設定する。図の通り:

CrashSightモジュール

現在のaccess_crashsightフォルダに導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

依存ライブラリを追加する

  • SystemConfiguration.framework
  • Security.framework
  • libz.dylib または libz.tdb
  • libc++.dylib または libc++.tdb(エラーがなければ追加しなくてもいい)

アクセス結果テスト
a. Debugモードを起動し、CrashSightを初期化し、適切な設定パラメータを与える
b. オンライン報告:テストデバイスのログに“begin to upload <CSAnalyticsLogic” または “cmd: 641”がプリントアウトされているかをチェックする
c. クラッシュキャプチャ:テストデバイスのログに“Handle the crash scene in callback”がプリントアウトされているかをチェックする
d. 異常報告:テストデバイスのログに“begin to upload <CSCrashLogic” または “cmd: 631”がプリントアウトされているかをチェックする

Appleログインモジュール

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

そして、関連のAppleログイン権限を設定し、プロジェクトでAppleログイン項目を設定する。図の通り:

システム依存ライブラリを追加する

  • AuthenticationServices.framework

Googleログインモジュール

現在のios-platform-googleloginフォルダに対応するモジュールおよびlibsの依存するリソースライブラリを導入する。GoogleSignIn.bundleはメインtagを導入する必要がある。

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

Build->New Copy Files Phase->Destinationを作成する。作成が完了したあと、図の通りに Frameworks を設定し、ドラッグした framework パッケージを Name ディレクトリに入れる:

info.plistでURLSchemesを追加する。 CLIENT_IDのフォーマットはcom.googleusercontentxxxxxxxx-xxxxxxx。具体的なパラメータは運営から取得してください。

xml
<key>CFBundleURLTypes</key> 
<array> 
<dict> 
<key>CFBundleURLSchemes</key>
<array> 
<string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string> 
</array> 
</dict> 
</array>

FaceBookログインモジュール

現在のios-platform-facebookloginフォルダに対応するモジュールおよびlibsの依存するリソースライブラリを導入する。 注意:プロジェクトにlibplatform-facebookshare.aシェアモジュールが導入されている場合、対応するios-platform-facebooklogin/libs または ios-platform-facebookshare/libs フォルダの依存ライブラリは一つを引用すればいい。そうしないと競合が発生する。

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを導入する

  • Accelerate.framework

Build->New Copy Files Phase->Destinationを作成する。作成が完了したあと、図の通りに Frameworks を設定し、ドラッグした framework パッケージを Name ディレクトリに入れる:

SwiftFile Bridging-Headerブリッジファイルを作成し、プロジェクトに置く

info.plistで対応するホワイトリストを追加する

xml
<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>fbapi</string> 
<string>fb-messenger-api</string> 
<string>fbauth2</string> 
<string>fbshareextension</string> 
</array>

海外の選択可能なモジュールのアクセス

FaceBookシェアモジュール

現在のios-platform-facebookshareフォルダに対応するモジュールおよびlibsの依存するリソースライブラリを導入する。 注意:プロジェクトにlibplatform-facebookshare.a シェアモジュールが導入されている場合、対応するios-platform-facebookshare/libs または ios-platform-facebooklogin/libs フォルダの依存ライブラリは一つを引用すればいい。そうしないと競合が発生する。

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを導入する

  • Accelerate.framework

Build->New Copy Files Phase->Destinationを作成する。作成が完了したあと、図の通りに Frameworks を設定し、ドラッグした framework パッケージを Name ディレクトリに入れる:

SwiftFile Bridging-Headerブリッジファイルを作成し、プロジェクトに置く

info.plistで対応するホワイトリストを追加する

xml
<array> <string>fbapi</string> 
<string>fb-messenger-api</string> 
<string>fbauth2</string> 
<string>fbshareextension</string> 
</array>

ネットワーク検出モジュール

ios-platform-cloudlogproducerフォルダを導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

BuiID Phases - > Link binary With Libraries 以下にStatus->RequiredをOptionalに変更する

機能実現は報告インタフェースと同様です。詳細なルールはこちらをご参考ください:クライアントデータ報告

appsflyerrモジュール

ios-platform-appsflyerフォルダを導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

システム依存ライブラリを導入する

  • AdSupport.framework
  • iAd.framework

あなたのマーケティングスタッフからOneLinkサブドメインを取得する

  1. Xcodeで、あなたのプロジェクトをクリックする。
  2. プロジェクトの目標をクリックする(下のスクリーンショットをご参照ください)。
  3. 機能タブに切り替える。
  4. 関連ドメインを開く。
  5. マーケティングスタッフから取得したサブドメインを追加する。
  6. フォーマットはapplinks:xxxxxxxxx.onelink.me。

方舟送信モジュール

  • ios-platform-analysysフォルダを導入する

アクセス方法:

  • 現在のフォルダをXcodeプロジェクトにドラッグする("Copy items if needed"項目にチェックを入れてください)

使用方法はSDK報告インタフェースを参考する

Objective-C
- (void)report:(EventType)type data:(AccessPlayerInfo *)info; 
- (void)setUserExtDataType:(EventType)type data:(AccessPlayerInfo *)userExtData DEPRECATED_MSG_ATTRIBUTE("Please use -report:info:");

カスタマーサービスモジュール

  • ios-platform-alhelpserviceフォルダを導入する

SDKに必要な権限を設定し、プロジェクトの info.plist に1つの権限を追加する:画像をカスタマーサービスに送信するために、Privacy - Photo Library Usage Description はあなたのアルバム権限にアクセスする必要があります

注意:ios-platform-alhelpservice/libsの対応するAIHelpSupportSDK.bundleリソースはxcodeプロジェクトのメインtagに置く必要があります

呼出方法の例:

Objective-C
[[AccessCoreSdk shareAccessCoreSdkManage]openService];

Firebaseモジュール

ios-platform-firebaseフォルダを導入する

xcodeの設定は下記の通り: info.plist FirebaseAppDelegateProxyEnabled で no に設定する

Background Modes でチェックを入れる

GoogleService-info.plist ファイルを導入するには運営から取得する必要があります

OpenInstallモジュール

ios-platform-openinstallフォルダを導入する

Info.plistファイルで配置appKeyのキー値ペアを設定する。 com.openinstall.APP_KEY xxxxxx

  • ワンクリックで openinstall を起動し、標準の Scheme(iOS<9)、Universal Links(iOS≥9)技術を通じて、app がインストールされている状況で、各種ブラウザ(WeChat、QQ、シンランウェイボー、DingTalkなどの主流のソーシャルソフトウェアの内蔵ブラウザを含む)から App を起動し、動的パラメータを渡す。
  • 統合された共通リンク(Universal Links)、iOS9以降にのみ適用
  • Apple開発者ウェブサイトで、現在の AppID のために関連ドメイン(Associated Domains)サービスを有効にする:
  • XCodeでopeninstallを設定し、現在のアプリのために関連ドメイン(Associated Domains)を生成する:applinks:xxxx.openinstall.io
  • 統合された Scheme、iOS9以下にのみ適用
  • Xcodeで Target -> Info -> URL Types を選択し、openinstall を設定し、現在のアプリのために Scheme を生成する。図の通り
  • パラメータ検証
Objective-C
- (void)loginSuccess:(AccessLoginInfo *)success;
AccessLoginInfo対象の対応するextendInfoフィールドを取得する。

SDKのよく見られるエラー解決方法

エラー1: dyld: Library not loaded: /System/Library/Frameworks/Network.framework/Network Referenced from: /var/containers/Bundle/Application/BC0FE029-D796-4FF6-A2142C5D0EBA6434/ios-platform-sdk.app/ios-platform-sdkReason: image not found Message from debugger: Terminated due to signal 6

解決方法:Status -> をOptionalに設定する

エラー2:Appleログインを呼び出した時、「不明な原因により認証リクエストが失敗しました」のヒントがあった場合、解決策は以下の通りです。

  • Sign in with AppleのCapabilitiesが追加されているかチェックしてください
  • おそらく対応するentitlementsファイルと引用するファイルが一致しないためです。まずは対応するentitlementsファイルを削除し、それから再度Capabilitiesを追加すると、新しいentitlementsファイルが生成されます。
  • ReleaseにもSign in with AppleのCapabilitiesが追加されているかチェックする必要があります

Hoolai Access SDK