첫 번째 링크는 0.을 사용하고 있습니다. 현재까지 볼 수있는 것은 0.8에 불과합니다 (적어도 iphone의 경우). 아주 최근 게시물이지만 최근에 추가되었을 수도 있습니다. 나는 0.8보다 최신 개정판을 사용하지 않았다.
나는 phonegap을 '연장'하여 다음과 같이 phonegap 앱에 흔들기 제스처 지원을 추가했다. 하지만 먼저 경고 :
애플은 PhoneGap 0.8을 앱 스토어에 제출할 수있는 것으로 간주합니다. 이것은 본질적으로 PhoneGap 0.8에 대한 확장 (매우 간단 함에도 불구하고)이므로 거절의 위험이있을 수 있습니다. 내가 개발 한 앱은 아직 승인 프로세스를 거치지 않았으므로 이에 대해 더 이상 조언 할 수는 없습니다.
또한 또한이 아이폰 고유의 것입니다 이것은 단지 때문에 새로운 UIEventSubtypeMotionShake
API
의 사용 3.0 이상 OS에서 작동 점에 유의. PhoneGap의 크로스 플랫폼 기능을 원한다면 다른 플랫폼 (안드로이드 등)에서 네이티브 측 수정을 구현하기가 쉽지 않으면이 대답이 도움이되지 않을 수도 있습니다. 이 경우 아이폰에서 지원하는 공식 phonegap 릴리스를 기다리는 것이 더 나을 수도 있습니다.
는
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (UIEventSubtypeMotionShake == motion)
{
[webView stringByEvaluatingJavaScriptFromString:@"navigator.myext.onShakeGesture();"];
}
}
그런 다음 myext.js
/* We need PhoneGap.js to be loaded to work properly before we can initialise so wait for it here */
(function()
{
var timer = setInterval(function()
{
if (typeof(PhoneGap == 'object'))
{
clearInterval(timer);
myExtInit();
}
}, 1);
})();
function MyExt()
{
// initialization
this.callbacks = {
onShakeGesture: []
};
}
/* Called by ObjectiveC side when a shake gesture is detected */
MyExt.prototype.onShakeGesture = function()
{
for (var i = 0; i < this.callbacks.onShakeGesture.length; i++)
{
var f = this.callbacks.onShakeGesture[i];
f();
}
};
MyExt.prototype.addShakeGestureListener = function(shakeCallback)
{
if (typeof(shakeCallback) == 'function')
{
this.callbacks.onShakeGesture.push(shakeCallback)
}
};
function myExtInit()
{
// Init phonegap extension specific objects using PhoneGap.addConstructor
PhoneGap.addConstructor(function() {
if (typeof navigator.myext == "undefined") navigator.myext = new MyExt();
});
}
지금 당신의 HTML 콘텐츠에 바로 링크 후 <head>
섹션을 myext.js을 포함 자바 스크립트 모듈로이 추가 PhoneGapViewController.m
에 다음 코드를 추가합니다
phonegap.js
<script type="text/javascript" charset="utf-8" src="myext.js"/>
을 사용하고 스크립트에서 사용하십시오 (예를 들어 경고가 발생하지만 수행해야하는 작업).
function watchShake() {
var cb = function(){
navigator.notification.alert("Shake it!");
};
navigator.myext.addShakeGestureListener(cb);
}
감사합니다. 이것은 원래의 질문에 답하는 것과 함께 PhoneGap 확장에 대한 좋은 통찰력을 제공합니다. – GloryFish
애플은 결국 애플의 인수 프로세스를 통과 했습니까? – Ash
@Ash, 프로젝트를 포기했기 때문에 결코 알아 내지 못했습니다. 그러나 나는 우연히 PhoneGap 통합과 함께 다른 프로젝트를 진행하고 PhoneGap의 새로운 빌드는이 대답 대신 사용할 수있는 훨씬 더 확장 가능한 플러그인 프레임 워크 (PGPlugin)를 가지고 있습니다. http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20iOS를 참조하십시오. – cidered