Hagoita: https://github.com/withstandist/hagoita
今回は、簡単な動作テストのため、HKURLProtocolをカスタマイズしたものを使います。
つまり、普通にNSURLProtocolとUnityの連携になります。
1,Unityで,uGUIでボタンを作成
using UnityEngine; using System.Collections; public class buttonAction : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void ClickTest () { Debug.Log ("Clicked."); StartCoroutine(Get("http://localhost:7777/test")); } IEnumerator Get (string url) { // 送信開始 WWW www = new WWW (url); yield return www; // 成功 if (www.error == null) { Debug.Log ("Get Success"); } else { Debug.Log ("Get ERROR"); } } }2、HKURLProtocolカスタムを用意
// // HKURLProtocol.m // Unity-iPhone // // Created by KIMITA Yusuke on 2015/04/09. // // #import "HKURLProtocol.h" @implementation HKURLProtocol + (BOOL)canInitWithRequest:(NSURLRequest *)request{ NSLog(@"canInitWithRequest"); return YES; } + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { return request; } - (void)startLoading { //Alertをだしてみた UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; [self responseJSONWithHttpStatusCode:200 data:[@"{}" dataUsingEncoding:NSUTF8StringEncoding]]; } - (void) responseJSONWithHttpStatusCode:(int)statusCode data:(NSData*) data{ NSDictionary*headers = [NSDictionary dictionaryWithObjectsAndKeys:@"application/json", @"Content-Type", [NSString stringWithFormat:@"%ld",[data length]], @"Content-Length", nil]; NSHTTPURLResponse* response = [[NSHTTPURLResponse alloc] initWithURL:[self.request URL] statusCode:statusCode HTTPVersion:@"1.1" headerFields:headers]; [self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; [self.client URLProtocol:self didLoadData:data]; [self.client URLProtocolDidFinishLoading:self]; } - (void)stopLoading { } @end3、UnityAppController.mmでNSURLProtocolを登録する
- (void)startUnity:(UIApplication*)application { [NSURLProtocol registerClass:HKURLProtocol.class];
4、結果
できました。
アンドロイドでの同様な仕組みができれば、使い道は広がりそうです。
0 件のコメント:
コメントを投稿