2015年5月29日金曜日

[iOS][Apple Watch] 錬金術師のレシピのApple Watch開発から申請まで3

MetaData rejectされました

CFBundleDisplayNameを変更しましたが、
CFBundleNameも変更する必要がありそうです。

これで再審査だしてみます。

2015年5月15日金曜日

[iOS][Apple Watch] 錬金術師のレシピのApple Watch開発から申請まで2

MetaData rejectされました
プロジェクト名とアプリ名が違わない場合あまり起きないとおもわれる。
Rejectメッセージが丁寧になって、どうすればいいかまで書いてあってすごく助かります。

3.4 - App names in iTunes Connect and as displayed on a device should be similar, so as not to cause confusion
に引っかかったようです。

ちゃんと、リストまで表示してくれています。
- Name on the App Store: Alchemist's Recipe
- Name displayed on iPhone: Alchemist's
- Name displayed on Apple Watch companion app: omoikane
- Name displayed on Apple Watch: Alchemist's

はじめ、
Name displayed on iPhoneは、長いので短くした表示名まで、合わせなくてはいけないようになったかと
焦りましたが、
これは、リリース時から通っているのでsimilarであると信じ
- Name displayed on Apple Watch companion app: omoikane
だけ修正をいれて審査にだしました。
InfoPlist.stringを追加して、CFBundleDisplayNameを定義(En,ja)

extensionのアプリ名までちゃんとしないといけないと思いませんでした。


これで再審査だしてみます。

*プロジェクト名:omoikane(オモイカネ)は、知恵の神様です。

2015年5月6日水曜日

[iOS][Apple Watch] 錬金術師のレシピのApple Watch開発から申請まで

「錬金術師のレシピ」にApple Watch対応の開発から申請までの困ったこと(ISSUE)。

[開発]
1、iOS6対応の古いソースに追加してよいのかわからなかった。
  追加可能だった。
2、xcode6.3.1を使用すると、apple watchがbuildできない。
    IPHONEOS_DEPLOYMENT_TARGET = 8.3;を4箇所「8.2」にかえてやる必要がある
   watch OSが8.2でiOSのバージョンより下なのが問題なのだろう。
3、Objectiv-Cで作成したが、WEBで検索するとサンプルがswift.
4、アプリ名のローカライズ
  InfoPlist.stringでAppleWatchもアプリ名が指定できる
5、アイコンのサイズがpt単位
  基本2倍のpxで、@3指定のものはptを3倍にすればOK.
  形式でアルファチャンネルをいれないようにする。
  対応したつもりでアップロードしたら、メールでアルファチャンネルはいっているよ。って送られてきた。

[申請]
1、Watch Kit,ExtensionともにAppidを作成して、プロビジョニングを作成する必要がある
  開発段階だと気にしなくてよく、アーカイブもできるけど、いざアップロードしようとすると失敗する
2、5.5,4.7インチのスクリーンショットが、画面サイズに対応すると必須になった

とりあえず審査待ち状態になった。

2015年5月1日金曜日

HagaoitaのAndroid側のメモ

Ajaxでアクセスしたものに対して途中で、自分の好きなものを返す。
キャッシュされたデータ、写真とか返すとかに使われる手法。
(Android開発者登録したから、リリースしたいな。)
public class MainActivity extends ActionBarActivity {

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView webView = (WebView)findViewById(R.id.webView);
        webView.setWebViewClient(new MyWebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
       //これがないとlocalファイルでajaxできない
        webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
        webView.loadUrl("file:///android_asset/index.html");
    }
}
public class MyWebViewClient extends WebViewClient{


    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        Log.d("#WEB", "aa111:"+url);
        if(url.indexOf("7777")>0){
            Log.d("#WEB", "aa111:IN");
            InputStream bais = new ByteArrayInputStream("{'Hello':'test'}".getBytes());
            WebResourceResponse res = new WebResourceResponse("application/json","UTF-8",bais);

            return res;
        }
        return super.shouldInterceptRequest(view, url);
    }

    @Override
//本当はこっちがつかわれるはずなんだけど、この先でまだ、上のほうがつかわれている
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        return super.shouldInterceptRequest(view, request);
    }
}