質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.02%

  • Monaca

    859questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • Cordova

    362questions

    Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

Monaca Cordova7.1へのアップデートに伴うdeviceready状態へ移行しないエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 310

meamea

score 6

 状態

Monaca上でiOS11への対応上Cordovaプラグインを6.2→6.5→7.1へとアップデートを行った。
直後にビルドを行った結果、起動直後からどれほど待ってもons.ready()関数が実行されていないため、アプリ全体で動作不良を起こしている。

 試したこと

ons.isReady関数をsetInterval関数で毎秒チェックしても常にfalseが返ってくる

    setInterval(function(){alert(ons.isReady());}, 1000);
    // Ready
    ons.ready(function() {
      //処理
    });

上記状態のため、Cordovaプラグイン周りの読み込みが完了しないことから
ons.isReady関数がtrueにならないと思い、
ビルドログを見たところcordova-plugin-cameraでエラーが吐かれていることがわかった。

- Cordova platform add -
$ /data/build-server/cordova/7.1.0/bin/cordova platform add /data/build-server/cordova/platforms/ios/4.5.4 --nofetch
Adding ios project...

iOS project created with cordova-ios@4.5.4
Discovered plugin "Camera" in config.xml. Adding it to the project
Failed to restore plugin "Camera" from config.xml. You might need to try adding it again. Error: Error: Unpublished by habor on 2016-07-20T09:00:15.019Z
Discovered plugin "monaca-plugin-monaca-core" in config.xml. Adding it to the project
Fetching plugin "monaca-plugin-monaca-core@3.2.0" via npm
Installing "monaca-plugin-monaca-core" for ios
Adding monaca-plugin-monaca-core to package.json
Saved plugin info for "monaca-plugin-monaca-core" to config.xml

その後Cameraプラグインをバージョンを4.0.1から2.4.1及び3.0.0に戻し再ビルドを行ったがエラーは解決しなかった。

 導入プラグイン

Camera     4.0.1
Custom Config 5.0.2
Device         2.0.1
File           5.0.0
File Transfer  1.7.0
InAppBrowser   2.0.1
MonacaPlugin   3.2.0
NIFCloudMB     2.0.10
SplashScreen   5.0.1
Whitelist      1.3.3

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" id="" version="">
  <name></name>
  <description>Made with Monaca (http://monaca.mobi)</description>
  <author/>
  <content src="index.html"/>
  <allow-navigation href="*"/>
  <allow-intent href="itms:*"/>
  <allow-intent href="itms-apps:*"/>
  <preference name="loglevel" value="DEBUG"/>
  <preference name="AndroidLaunchMode" value="singleTop"/>
  <preference name="ErrorUrl" value=""/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="AllowInlineMediaPlayback" value="false"/>
  <preference name="BackupWebStorage" value="cloud"/>
  <preference name="KeyboardDisplayRequiresUserAction" value="true"/>
  <preference name="MediaPlaybackRequiresUserAction" value="false"/>
  <preference name="SuppressesIncrementalRendering" value="false"/>
  <preference name="TopActivityIndicator" value="gray"/>
  <preference name="GapBetweenPages" value="0"/>
  <preference name="PageLength" value="0"/>
  <preference name="PaginationBreakingMode" value="page"/>
  <preference name="PaginationMode" value="unpaginated"/>
  <feature name="LocalStorage">
    <param name="ios-package" value="CDVLocalStorage"/>
  </feature>
  <preference name="UIWebViewDecelerationSpeed" value="normal"/>
  <plugin name="Camera" value="CDVCamera"/>
  <preference name="WindowsStorePublisherName" value="My Name"/>
  <preference name="WindowsStoreIdentityName" value="2a9fbf65-4738-10b6-441d-9a48327e30d3"/>
  <preference name="monaca:targetFamilyiPhone" value="1"/>
  <preference name="monaca:targetFamilyiPad" value="0"/>
  <preference name="KeepRunning" value="true"/>
  <preference name="monaca:AndroidIsPackageNameSeparate" value="false"/>
  <preference name="Orientation" value="portrait"/>
  <preference name="SplashScreenDelay" value="1000"/>
  <preference name="Fullscreen" value="false"/>
  <platform name="chrome">
    <icon src="/platforms/chrome/icon.png" width="128" height="128"/>
    <icon src="/platforms/chrome/icon.png" width="128" height="128"/>
  </platform>
  <preference name="FadeSplashScreenDuration" value="1000"/>
  <preference name="ios-XCBuildConfiguration-TARGETED_DEVICE_FAMILY" value="1"/>
  <preference name="AutoHideSplashScreen" value="true"/>
  <preference name="FadeSplashScreen" value="true"/>
  <preference name="ShowSplashScreenSpinner" value="false"/>
  <access origin="*"/>
  <access origin="*"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="EnableViewportScale" value="true"/>
  <edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge">
    <string>need camera access to take pictures</string>
  </edit-config>
  <edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge">
    <string>need to photo library access to get pictures from there</string>
  </edit-config>
  <edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge">
    <string>need location access to find things nearby</string>
  </edit-config>
  <edit-config target="NSPhotoLibraryAddUsageDescription" file="*-Info.plist" mode="merge">
    <string>need to photo library access to save pictures there</string>
  </edit-config>
</widget>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

自分もMonaca(cordova)初心者で色々と手探りの中なので的はずれな回答でしたら申し訳ございません。
少しでも参考になればと思い投稿させていただきます。

つい最近経験した事象ですが、Monacaデバッガー(iOS v10)を使用し1月中ごろまで動作していたアプリが
2月上旬頃より動作しなくなり調査したところ「deviceready」イベントがコールされない現象がありました。
devicereadyイベントですが、今回対象のons.ready()でなく、「document.addEventListener("deviceready", onDeviceReady, false);」
と異なりますが、この時の対処方法は、「<meta http-equiv="Content-Security-Policy">」を変更する事で解決いたしました。

変更前
<meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
変更後
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-eval' 'unsafe-inline' gap://ready file:; style-src 'self' 'unsafe-inline'; media-src *; img-src * 'self' filesystem: data: blob:;" />

※Content-Security-Policyのそれぞれの意味はよく理解していませんが「gap://ready file:;」辺りがポイントだった気がいたします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/27 10:53

    上記対応を行ったところ、devicereadyが正常に発火するようになりました!
    ありがとうございます。

    よく調べたら7.1からの挙動ではなく、6.5からiOS10以降用にセキュリティが上がったのですね。
    https://press.monaca.io/takuya/467

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Monaca

    859questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • Cordova

    362questions

    Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。