[Unity iOS] ツイートについて

2017/01/24
unityのツイートは、social-connectやらsocial-workerやらを試したり、
iOsのネイティブプラグインを書いてやったりもしたが、
どれもいい感じにならなかったり、思い通りに動作してくれなかったりと、
ずっと悩んでいた。
ただのテキストツイートすら、ままならぬ状態だった。

とりあえず、UNITY5.5と、iOS10で、確実にツイートできるコードを書いておく。


 string s_tag = "ビクトリー";
 string s_text = "スマホゲーム『ビクトリー』by Andymente\nやったよ☆\n";
 string s_url = "https://itunes.apple.com/jp/artist/kazuyoshi-izumi/id1013586610";
 
 var uri = new Uri("https://twitter.com/intent/tweet?text="+s_text+"&url="+s_url+"&hashtags="+s_tag);
 Application.OpenURL(uri.AbsoluteUri);

*注意:ファイルの頭に、using System; を追加しておくこと。


まず、普通にツイートするだけなのだが、WWW.EscapeURLが、Androidではうごくのに、
iOSだとなぜか機能せず、エラーメッセージも履かずに動作しなかった。
そこでuriクラスを使用することで、回避した。

comment (0) @ 未分類

[Unity Ios] openURLのこと

2017/01/24
ios9からの変更で、

「test://」というURLスキームを呼び出せるようにするには、
Info.plistで「 LSApplicationQueriesSchemes 」をArray型で作成し、
URLスキーム部分(「://」のない「test」)をその配列に加えていく。


LSApplicationQueriesSchemes (Array)
 Item0 (String) test
 Item1 (String) http
 Item2 (String) https

comment (0) @ 未分類

毎回わすれるから、UNITYでiOSアプリの書き出し・申請手順おぼえがき

2017/01/11
準備

・macのUNITYで、iosプロジェクトを書き出す。

・XCODEで読み込み後、
 まずUnity-iPhoneとか、デフォルト名になっているので、
 プロジェクトを workspace に 正しい名前で save

→右端上のIdentyty and TypeのNameを
Unity-iPhoneになっているので、正式名に。

各項目のRename の確認がでるのでRenameさせる

→PROJECT TARGETS
・Ientity

・Display nameを決める。日本語のなら日本語で。
・Sining
Teamを選択する

・恐ろしいGoogleのAdmobのため、Plistに申請記入
Privacy - Bluetooth Peripheral Usage Description
Privacy - Calendars Usage Description
Privacy - Camera Usage Description
それぞれを加えて、Stringに、"広告で使用します。"と、記入。

→[PRODUCT]→[ARCHIVE]
   アーカイブ実行中くらいに、iTunesconnectの方で、登録しておく。
完了後、vaildateをし、OKがでたら、Upload to App store



・iTunesConnectの申請
サブフィックスは、バンドルID
電話番号は "+81"を前につけて、090や080の最初の0を抜かしてつなげる
+8190xxxx-xxxx

・ビルドリストに反映されるまでは最近では結構時間がかかる。

・とりあえず公開は手動にしといて、審査とおってから配信させる。
comment (0) @ 未分類

デベロッパー更新と、この1年の数字

2016/06/09

こっちに書きました。

http://andymente.blog.fc2.com/blog-entry-515.html


comment (0) @ 未分類

新作アプリ iphone用ゲーム『私のタオル、使うなぁああ!』リリース

2015/11/08
10月中に製作していた新作ゲームが、今日リリースされました。

申請は一発で通ったのでホッとしました。
10月の最終日くらいに申請したので、今回は申請期間は10日くらいだったかもしれません。

というわけで、良かったら遊んでみてください。

taoru1.jpgtaoru2.jpgtaoru3.jpg


iPhone用ゲーム『私のタオル、使うなぁああ!』


もし検索で引っかからなかった場合は、↓以下のQRコードやURLで飛べます。
taoru_icon_long.jpg
comment (0) @ 申請

[iphoneアプリ] 広告のことと、海外ローカライズ

2015/11/01
今回最初につくったゲーム「ほるほる」に、はじめてAdModを導入してみた。

広告を入れるのは、今まではiAdだけだったので、
他の広告フレームワークを入れて実装するというのも初めてだったし、
AdMod以外に、どんなのを入れるのが有効なのかとかも、全然分からなかったので、
とりあえず有名なAdModをいれてみた感じ。

これがどれくらいの有効性なのかはまだ分からないけど、
ネットを色々見てると、どうもNendがいいらしい。
しかし、ネットの、アプリ界隈情報って、半年経つと風化してしまうものが多い、というのが
だいぶ分かってきたので、あまり信用ならない。
AppleのOS変更なんかであっという間に飛ばされてしまうものも多いだろうし。

さておき今回は、iADとAdModを12秒おきに交互に表示させるようにしてみた。

これまでのほるほるにおけるiAdの効果は、以下のとおり

公開月  230円
翌月   120円
翌々月  90円
4ヶ月目 60円

雀の涙ほど。順調に下がっている。
この傾向なら、5ヶ月目である11月は、40円くらいになるだろうが、
アップデートをしたので、多少はあがるかもしれない。
しかし、AdMobと交互に表示させるので、それによる影響もあるかもしれない。
小さなデータだが、何か面白い発見が見つかるといいなと思っている。

あと、
二作目の「おっさんと川」で、英語ローカライズをしたのだが、
良く分からないことがあるので、書き留めておく。

まず英語ローカライズをしたけれど、
itunes connectのアナリティクスでは、海外での閲覧数はずっと0のままになっている。

せっかくローカライズしたのに、
まったく閲覧すらされていないのかと落ち込んでいたが、
iAdの広告の方の結果からは異なるデータが見られる。
iAdの広告のデータでは、わずかだが、アメリカやペルーやウクライナやベトナムといった国がデータに並んでいる。

これはいったいどういうことなんだろう。
iTunes Connectのアナリティクスがおかしいのか、あるいは、
本当に外国ではちっとも閲覧すらされていなくて、iAdの方がおかしいのか。

しかし、ほるほるをリリースした時も、
ペルーやウクライナやベトナムが少しだけ見受けられたような気がする。

ひょっとして、ペルーやウクライナやベトナムって、
Appleの審査員やiAdの職員がいる国なんじゃないかと、
私は邪推してみた。

だから、iAdを発行する際の最初の実装テスト時に、念のために1回くらいは閲覧していて、
それがカウントされているのでは・・・
まあ、あくまで妄想だが。

いずれにせよ、
海外ローカライズしたところで、閲覧が0なら、
海外は最初から無視した方がいいということになる。

この辺り、どういうことなのか情報が知りたいが、
ネットで調べてもそんな情報はでてこないので困ったものだ。

comment (0) @ tips

[iOS9 swift2.0 SpriteKit] メモリリーク?について

2015/09/27
ここ数日、アップデートのためにビルドをアップロード&申請しては、
バグを見つけて直して、再び申請・・・というのを繰り返していました。

バグといっても、全てiOS9とswift2.0への変更によって生まれた不具合なわけですが、
自分に責任がないものに時間をとられるほど辛いものはありません。

しかし、Swift2.0とiOS9、様子がおかしい所がザクザクでてきます。
今回新たに見つけたのものの中の1つは、メモリ関連です。

シミュレーター上で、メモリがどんどん膨れ上がる現象を発見し、
その原因究明に翻弄されたのですが、
ついぞ原因は分からず。
もちろん、そんなものはiOS8やSwift1.2まではなかったものです。

instrumentalで調査すると、
普通にSpriteKitの、SKNodeを以下のように宣言する部分で、メモリリークが僅かずつ発生していると表示されます。

 var i = SKNode()

中身がまだ未定なインスタンスを生成しているだけなのですが、
これでリークとか言われてもちょっと……。

Swiftの仕様変更に対し、SpriteKit側が対応し切れていないのでしょうか?

しかしSpriteKitの現場で実際に使っている人の記事さえ皆無に近いのに、
その上iOS9、Swift2.0で、という条件が重なると、
少なくとも日本で同じことを悩む人は0人なんじゃ・・・と本気で思えてきて怖いです。

やはり、とっととcocos2d-xへ移行した方がよいのかもしれません。

comment (1) @ 未分類

[アップデート2回目] XCODE7で、iOS8のデバッグをする方法。SpriteKit、iOS8.4→iOS9にすると画面が崩れる

2015/09/25
今日、ゲーム「おっさんと川」のアップデートで審査が通り、AppStoreに並んだのだが・・・
iOS9のせいで、いろいろ手間取ったアップデートだったこのver
必死にiOS9に対応させ、ようやく審査も通ったというのに、
この段階に至って、
iOS8.4以下で、表示がおかしくなっていることに気づいた。

こんどはそっちかあああ

ていうか、XCODEを7にし、iOSを9にした時点で、
下位verとの連携が重要になってくるんだから、
verup直後は、その辺を慎重にみられるようなお膳立てをAPPLEはどうしてやってくれないのか。
たとえば、XCODE7には、iOS8.4以前のシミュレーターをデフォルトでインストールさせていて、
しばらくは、iOS9との比較シミュレートを自然とデベロッパーが意識できるようにするとか。

下位となったiOS8.4のシミュレーターをあとからダウンロードしてインストールして、
シミュレートできる、などということを、私は今日知って、なんだかやるせ無い気持ちになった泣。

そういうわけで、
XCODE7で、iOS8のデバッグをする場合は、

XCODEのシミュレーターを選択するリストにある、
「more simurater」を選択し、
そこから、以前のverのシミュレーターをダウンロード&インストールすると、
可能になる。


シミュレーター選択リストが多くなってきたなくなるけど、当面は仕方がない。


というか、なぜiOS9は、いろいろと画面が崩れているのだろう。
いろいろネットで見てみると、Float周りが変更になったとか、Viewの初期値が変更になったとか、
多分そのあたりのせいだと思うのだが、よくは分からない。

とにもかくにも、その辺をもう一度見直して、すぐさま修正版をつくり、今日アップロードした。
すると、前回、iTUNES Connectの、ビルドが2時間も表示されず、ものすごく苦労したことがあったが、
おそらくそのあたりの苦情が多かったのだろう、早速、ビルド表示に関して変更が加えられていた。
ビルドをアップロードすると、反映されるまでに処理中という表記がされるようになったようだ。


というわけで、いろいろあったが再申請した。
comment (0) @ 申請

[XCODE 7 & iOS9] iOS9でのリジェクトと、XCODE7&iOS9対応

2015/09/17
9/16
まだiOS9が公開されてもいないのに、
「iOS9で動かないから」という理由で、
アップデート申請中だったゲームがリジェクトされた。
ひどい話だ・・・。

しかしAPPLEとはそういう会社だと割り切って、
仕方なくiOS9と、XCODE7をいれる。

以前のプロジェクトを開くと、
Swiftコードを修正しますか、と聞かれるのでOKとすると、
10分くらい修正されるが、
ようやく終わってコンパイルしてみると、
修正とやらが全く無意味だったのではと思うくらいエラーと警告が吐き出される。

とりあえずXCODE7のswift2.0で大きく変わったのは、
個人的には、

1、Varによる宣言が厳しく取り締まられるようになったこと。
 変更のない変数宣言はLetにしろと怒られる。

2、optionalの仕様が少しかわったらしいこと。
 さらに面倒になった

ことが嫌だ。

他にも、
一部のメソッドが使用不可になっていたり、型が変わっていたりと、
もうたくさんありすぎて、おぼえていないが、とにかく一個一個地道に修正していく。

あとXCODE7になって、スナップショットが消えたのが
個人的には一番つらい。


そしてようやくコンパイルが通り、実機で動かせるようになると、
今度は画面がけっこう崩れていることに気づく。


どうも、SpriteKitのzPositionの初期値や、SKLabelNodeのVertical初期値などが若干変わっているようだ。
なんでそんなところを変えてくるのか意味不明だが、仕方ないので修正する。

HTTPSに関してはすでにネット上で色々いわれているので、Plistに例外を指定。

Info.plist
 > NSAppTransportSecurity(Dictionary型)
  > NSExceptionDomains(Dictionary型)
   > test.com (Dictionary型) ← ドメイン
    > NSTemporaryExceptionAllowsInsecureHTTPLoads (Boolean型) → YES


これでHTTPでもアクセス可能になる。


ようやくひと段落ついたかなと思った頃に、
なにやらずっとLogに吐き出されている文字にようやく意識がむく。
気づいてはいたが、見て見ぬふりをしていたんだけど、そろそろ見てみる。

_BSMachError
とか
CAMetaLayerうんたら
とか、
warning
とか
かつてはなかったようなログが大量に吐き出されている。

どうも実機で動かした時だけ吐き出されるログのようだ。

ネットで検索しても、英語圏の記事が5件ほどしか出てこない

この世にXode7やSwift2.0を実戦的に使っている人間はほとんどいないんじゃないかと不安になるレベル。

その5件の記事を翻訳しながら読んでみても、
どうも解決できないと外人さんも言っているようなので、
私もあきらめて放置することにした。

そしていよいよアーカイブ化しようとした時、
ちょっと気になってStoryBoardを見てみると、
StoryBoardを開いた途端、
警告が50個くらい出現する。


なにやらAutoLayoutが微妙にくずれている。

なんで・・・???

全く意味不明だが、仕方ないので、全部手作業で修正。

しかし、iAdのad bunnar のサイズだけが
Frame for "iad main" will be different at run time.
と出て、消えない。

中を展開すると、
Height will be 32 at run time but is 66 in the canvas.

何度見ても、ボード上のサイズも指定も32なんだが・・・
当然、レイアウトを配置しなおしても消えない。
というかiADのバナーのサイズは2種類限定のはずで、
なぜ66などという数字が出てくるのか意味不明。

もういやになって、これも放置してやった
シミュレーターで見る限りは見た目に問題はない。


そして、いよいよ
アーカイブ化。

ところが、

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message

という警告が
アーカイブ時に出現。

初めて見た。

どうもアーカイブのサイズがでか過ぎるらしい。

色々調べてみると、
たしかにアーカイブのサイズが160MBを超えている。
なんでや!!!!
元来は51MBくらいのサイズのはず・・・。

XCODE6アップデートの際もにたようなことがあった、という記事を発見。

警告を無視してそのままsubmitしたら、App Storeでは正常なサイズになっていた、と書かれていた。

不安ながらも、きっと無視して大丈夫・・・と信じつつアップロード。

はい、ビルドに表示されません。


今日は早朝から夜の11時までずっと奮闘していたので、
そろそろ精神的にも限界。

しかしそれでももう少しねばって、
プロジェクトやフォルダの中を調べたり、無駄なフォルダを削除してみたり、
色々消してみたり、
それでもやっぱり何度やってもアーカイブのサイズは161MBのまま。
へんな警告は残り続けてるし・・・。

Snap shotがないせいで、元に戻るのが難しいし・・・。

もういやじゃぁあああああああ

ちなみに、同じverでアーカイブ化したものをアップロードすると、
すでにアップロードされています、とエラーが出る。

すなわち、警告はでているものの、アップロードは成功しているということになる。
しかし、ビルドにはなぜか表示されない。

これはもはやAPPLEのいじめに違いない。


そして3、4回目くらいのアーカイブアップロードの時、
iTunes connectのビルドに、
1番最初にアップロードしたアーカイブが表示される。

・・・・・・


要するに、すごいラグがあるということなのだろうか。
ちなみに、そのアップロードからはすでに2時間くらいが経過している。

ネットには、5分くらい待たないとビルドに表示されないことがあるから注意してね♪
とはあったが、
2時間などという数字はどこにも書かれていない。

しかし実際、2時間待ってようやく表示されている始末。


ということは、最後にアーカイブ化してアップロードしたものは、いまから
2時間くらい経過すれば、表示されるのかもしれない。

あるいは、このXCODEのver跨ぎによって発生するアーカイブのサイズの巨大化は、
巨大化したアーカイブをアップロード後にitunes connect側で何か、適正なサイズに作成しなおしているのかもしれない。
そのせいで、ビルドへの更新がこれほどに遅れているのでは。

だとすると、XCODEからitunes connectまで含めてお粗末な構成だとしか言いようがない。
というか全てを振り返ってみて、
なんとも稚拙で乱暴なアップデートである。

ネット上の過去の記事などをみれば、こうしたアップデートが今までに何度も行われていることかわかる。
そのたびに、デベロッパー達はくるしんできたようだ。

Micrsoftならこれくらいでも当たり前という感じはするが、
これがクールさを売りにするAPPLEの実態とはなんとも哀れな感がある。

しかし
今回のことで、
android開発にも触手を伸ばすモチベーションが大いに高まったので良しとする。


追記

このブログを書いていると、
最後にアップしたアーカイブがビルドに表示された。
アップしてから1時間くらいだろうか。
そして、無事、ようやく審査待ちに。

しかし、今後もこんなしょうもないことに付き合わされなければならないと思うと、iPhoneアプリ開発は本当に割りに合わない。
もっといい加減に向き合った方がいいのかもしれない。
comment (0) @ エラー

[初めてのアップデート] 英語へのローカライズ

2015/09/05
先月公開したばかりの私の第二作目のiPhoneゲーム
「おっさんと川」を、今回アップデートすることにした。

iPhoneアプリをアップデート申請するのは今回が初めてだ。

今回のアップデートの主な内容は、
英語へのローライズ。

ゲーム部分に対しては修正や若干の追加等はあるが、概ねマイナーチェンジとなっている。

英語へのローカライズ方法はいろいろとネットで紹介されているが、
私の場合、ほぼ意味をなさなかった。
なぜなら、UIKitをほとんど使っていないからだ。

そして、私にとって鬼門となっている
アプリ名のローカライズが何故かうまく機能しない呪い
は、今回もやはり私を苦しめた挙句に、結局アプリ名をローカライズできずに終わらせた。

ほんと、iPhone開発においては、私の場合、
ネットの情報が比較的、あてにならない・・・。

で、実際にはどのようにローカライズしたかというと、
アプリ名の方はどうせ変わらないので、
infoPlistの方は、直接日本語で「おっさんと川」と記入し、
一応、ネット情報通り、
Plist.stringファイルを作成して、CFBundle Display Name で
英語と日本語とそれぞれの名前を書いて入れておいた。
入れても全く機能していないんだけど・・・、もしかしたら公開されたら機能されてるんじゃ・・・というわずかな可能性に望みを託して・・・
まあ、そんな運頼みは当てにしてないので、
このままだと多分、英語版でも、日本語でしっかりと「おっさんと川」と表記されたアプリ名になると予想している。
日本語カッケー的な人に気に入ってくれたらいいや、くらいに思っている。

そして、ゲーム内においては、

func language() -> String {

var s:String? = NSLocale.preferredLanguages().first as? String
if s == nil { s="" }
return s!

}


使用時は・・・

if language() == "ja" {
日本語
} else {
 英語
}

という感じで、手作業でローライズした。
手作業とはいっても、一人で作ってるから、これで十分である。
グーグル翻訳とにらめっこしながら、病み上がりだったが二日で全て英語化した。

時間はかかったが、大した作業でもない。
英語になることによるデザインなどの微調整も同時にやった。

アプリ内課金部分は、もともとEnglishローカライズの設定を付与させていたが、
こちらはデバッグの度に言語がフラフラしていた。どうやら、App storeの言語圏に依存するらしい。
これはしょうがない。公開時には上手くいっているだろう。

そんな感じでローカライズを済まして、
英語用の説明やキーワード、スクリーンショットなんかも準備して、
アップデート申請完了。


私のこのゲームは、
公開から2週間弱でダウンロード件数がやっと400ほどだ。
これだけでは到底やっていけない数字である。

英語圏へのローカライズにより、どれくらい状況が変わるのか、今後の展開を
みておきたい。

というわけで、ローカライズ申請、上手くいきますように。

ossan_icon2.jpg
comment (0) @ 申請

SwiftとSpriteKitでゲームアプリを作る

XCODEにて、SwiftでSpriteKitを使ってゲームアプリを制作します