16

Phonegap (3.0.3) と Cordova CLI をインストールしました。

プラットフォームとしてiOSも実行しています(を使用して確認$ cordova platforms ls

プラグインをインストールしました ( $ cordova plugins ls)

org.apache.cordova.core.dialogs
org.apache.cordova.core.vibration

ただし、このコンソール コマンド ( $ cordova emulate ios) を実行すると、次のエラーが発生します。

Undefined symbols for architecture i386:
  "_AudioServicesAddSystemSoundCompletion", referenced from:
      _playBeep in CDVNotification.o
  "_AudioServicesCreateSystemSoundID", referenced from:
      _playBeep in CDVNotification.o
  "_AudioServicesDisposeSystemSoundID", referenced from:
      _soundCompletionCallback in CDVNotification.o
  "_AudioServicesPlaySystemSound", referenced from:
      _playBeep in CDVNotification.o
      -[CDVVibration vibrate:] in CDVVibration.o
  "_AudioServicesRemoveSystemSoundCompletion", referenced from:
      _soundCompletionCallback in CDVNotification.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)


** BUILD FAILED **


The following build commands failed:
    Ld build/MyApp.app/MyApp normal i386
(1 failure)

ここの API ページ ( http://cordova.apache.org/docs/en/edge/cordova_notification_notification.md.html#NotificationMyApp > www > config.xml ) の指示に従いました。以下は、エラーの原因となるファイル内の config.xml ファイルです。.

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.myapp.myapp" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>MyApp</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@callback.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <plugin name="Notification" value="CDVNotification" />
    <access origin="*" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />   
</widget>

問題が何であるか、およびそれを修正するにはどうすればよいかについて何か提案はありますか?

4

3 に答える 3

14

Xcode プロジェクトに AudioToolbox フレームワークを追加します。

ターゲット > ビルド フェーズ > バイナリをライブラリにリンクする

「+」ボタンをクリックします

AudioToolbox.framework を選択します

于 2013-08-28T15:16:42.153 に答える
0

CDVNotification.h を見てください。#import 行は、コンパイル ソースのビルド フェーズに追加する必要があるすべてを示しています。

Foundation/Foundation.h UIKit/UIKit.h AudioToolbox/AudioServices.h

これら3つを追加すると、コンパイルされます。

更新 - CDVNotification.m で追加の変更が必要です

playBeep() は soundCompletionCallback() を呼び出します soundCompletionCallback は playBeep() を呼び出します

playBeep でエラーが発生しないようにするには、soundCompletionCallback を宣言する必要があります。簡単な解決策は、playBeep の前に宣言し、後で定義することです。

static void playBeep(int count) の直前にこの行を追加します

// declared but not defined to avoid undeclared error in playBeep
static void soundCompletionCallback(SystemSoundID  ssid, void* data);
于 2013-12-20T06:11:35.637 に答える