Tag Archives: iOS SDK

Vuforiaでカメラのフォーカスがきかない場合

0
Filed under Unity
Tagged as , , ,

Vuforiaでカメラを作って、実機で動作させてみたら、カメラのフォーカスが合わない問題が発生しました。
自分の場合では、iPhone用に同じコードをビルドしても問題ないのに、Android用に書き出したら問題が出てきました。
調べてみたところ、下記ページに解決策が載っていました。
https://developer.vuforia.com/forum/unity-extension-technical-discussion/camera-focus-mode-android-unity
ARCameraの設定時にフォーカスモードを設定させる、というものなのですが、具体的にスクリプトまで配布されていて、これをARCameraにアタッチすれば解決する、というものです。
CameraFocusController.zip

using UnityEngine;
using System.Collections;
using Vuforia;
 
public class CameraFocusController : MonoBehaviour {
 
    private bool mVuforiaStarted = false;
 
    void Start () 
    {
        VuforiaARController vuforia = VuforiaARController.Instance;
 
        if (vuforia != null)
            vuforia.RegisterVuforiaStartedCallback(StartAfterVuforia);
    }
 
    private void StartAfterVuforia()
    {
        mVuforiaStarted = true;
        SetAutofocus();
    }
 
    void OnApplicationPause(bool pause)
    {
        if (!pause)
        {
            // App resumed
            if (mVuforiaStarted)
            {
                // App resumed and vuforia already started
                // but lets start it again...
                SetAutofocus(); // This is done because some android devices lose the auto focus after resume
                // this was a bug in vuforia 4 and 5. I haven't checked 6, but the code is harmless anyway
            }
        }
    }
 
    private void SetAutofocus()
    {
        if (CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO))
        {
            Debug.Log("Autofocus set");
        }
        else
        {
            // never actually seen a device that doesn't support this, but just in case
            Debug.Log("this device doesn't support auto focus");
        }
    }
}

Realmのdeprecatedメソッド対策

0
Filed under iOS SDK, トラブルシューティング
Tagged as ,

とあるプロジェクトで使用しているRealmですが、バージョンアップしたらあるメソッドでwarningが出るようになりました。

NSString* pathToRealm = "/path/to/data.realm";
[RLMRealm setDefaultRealmPath:pathToRealm]; // ここでwarning!

調べてみると、0.95.0でいくつかの設定系メソッドがdeprecatedになっていたのです。
上記ソースの箇所は次のように書き換えて対応可能でした。

// deprecated.
// [RLMRealm setDefaultRealmPath:pathToRealm];
 
// for Realm v0.95.0
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.path = pathToRealm;
[RLMRealmConfiguration setDefaultConfiguration:config];

iPadアプリのiOS9対応メモ

0
Filed under iOS SDK, iPadアプリ, トラブルシューティング
Tagged as

iPadアプリでもiOS9対応はいくつか問題というか、対応が迫られるようです。

ERROR ITMS-90474

私の場合、既存アプリを再submitして出てきたエラーは次のようなものでした。
ITMS90474-error
ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight'.
要は、「このアプリはPortrait方向にしか対応していないけど、iPad Multitaskingに対応するためには、全方向に対応しろ」ということですね。
まぁ、このアプリの場合、ある程度問題なく動くようにはしていたので、プロジェクト設定を下記のように全方向にチェックを入れることで対応はできました。
ITMS90474-xcode
(もちろん画面を回転させてもある程度動作することをは確認しておく必要はあります)
もしくは、この設定画面の下にある「Requires full screen」にチェックを入れることでも対応可能なようですが、この場合は、iOS9からの新機能のiPad multitaskingに対応できなくなります。
この辺りは下記Qiita記事にまとまっています。
・iOS – iPad Multitaskingに対応したメモ – Qiita

iOS9対応、あっちもこっとも、大変ですね。。

iOS 9のUIWebViewがとても残念で困る

0
Filed under iOS SDK, トラブルシューティング
Tagged as ,

気になる挙動(バグ?)があちこちにあるiOS 9のUIWebViewについて、twitter等で見つけた情報をまとめていきます。(なにか分かれば追記していきます)

まとめ

分かりやすいように、最初に箇条書きをまとめておきます。

  1. iOS 9のUIWebViewでは基本的に、強制HTTPS通信!
  2. iOS 9のUIWebViewではHTTP通信したい場合はATSまわりを設定する
  3. CSSのチルダ(~)セレクタが使えなくなった
  4. UIWebViewのwindow.locationがページ遷移に併せて変わらなくなった
  5. htmlのmetaタグのviewportのcontentには”devie-width”を入れるといいらしい

(2015/09/22 更新)

ATS(App Transport Security)関係

『iOS 9のUIWebViewでは、HTTPS通信が基本となる』というのが、Apple Transport Security、通称「ATS」というものです。
事前に開発者には通告されていたし、下記のようなまとまった情報もあるので、必見です。
■[iOS 9] iOS 9 で追加された App Transport Security の概要 | Developers.IO

ということですが、
「まぁ、全部OKにするオプションがある」ということを知っていたので、それで当面はいいだろう、と思っていました。
が、実際にiOS9で使ってみると、なんかおかしい!という感じが出てきたので、調べてみた、というのが今回のブログエントリです。
主に、twitterで情報収集してみました。

UIWebView関係


そうなんです!
実際に使ってみて驚いたのがこれ。。


私も、例外とかクラッシュじゃなく変な止まり方に遭遇しています。。
そう、jsからUIWebView経由でネイティブのUIが動くときが、何か怪しいのです!


Ionicは、Cordova+Angularのフレームワークらしいです(知りませんでした)が、Angular関係でも何か問題あるようですね。


あ、これか!
【iOS 9のUIWebView】では、【CSSのチルダ(~)セレクタ】が使えなくなった、ということらしいですね!!!

↓こちらの記事がまとまっているようです。
■Preparing for iOS 9 | The Official Ionic Blog
前述したIonicの開発者ブログですが、これを読むとさらに闇は深いことが判明!

同ブログの別エントリで詳しく書かれていますが、なんと、UIWebViewのwindow.locationがページ遷移に併せて変わらなくなった、という問題もあるようです!
■iOS 9 Potential Breaking Change | The Official Ionic Blog

その他の問題

AppleのDeveloper Forumからメモ。
HTMLのレイアウトの問題らしい。
■UIWebView layout in iOS 9 | Apple Developer Forums

<meta name="viewport" content="initial-scale = 1.0”>
↑じゃなくて、↓をのように、device-widthをいれるといいよ。
<meta name="viewport" content="width = device-width, initial-scale = 1.0”>

これは軽微な感じですね。

というわけで、

拙訳:『UIWebViewは壊れてるし、WKWebViewは制限ばっかだし、WebViewControler(訳者注:SFSafariViewControllerのこと?)はラッパー作りたい人には向かないし、つんだ。』

同感。

いや、そんなこと言ってないでやっぱり、WKWebViewに置き換える作業しなきゃ、ですよ>自分