2009-02-25 28 views
30

Làm thế nào để bạn lập trình làm như sau từ iPhone SDK:lập trình Quay số điện thoại và thông qua DTMF sử dụng iPhone SDK

  1. Lập trình quay số điện thoại thông qua iPhone SDK

  2. Bypass sự quay số/hủy nhắc nhở rằng iPhone sẽ trả về

  3. Gửi DTMF bổ sung sau khi số được gọi giống như cách bạn sẽ tạm dừng chương trình thành một phở thông thường ne.

Tôi biết bạn có thể thực hiện cuộc gọi tel:// nhưng vấn đề là nó sẽ trả về quay số/hủy nhanh chóng và sau đó nó ngăn cản bất kỳ DTMF trong tương lai từ được gửi đi.

Trả lời

30

SDK iPhone KHÔNG cung cấp cho bạn quyền truy cập trực tiếp vào các số quay số (hãy tưởng tượng nếu chương trình 'xấu' có trên điện thoại của bạn và quay số trả tiền mỗi phút trên tắt tiếng để bạn không nhận thấy).

Tuy nhiên, nếu bạn sử dụng liên kết tel thì bạn có thể gửi "," các ký tự chèn tạm dừng.

Vì vậy, để quay số 555-1212, sau đó chờ 4 giây, sau đó làm 12345 # trên những giai điệu cảm ứng bạn sẽ sử dụng số điện thoại: 5.551.212,, 12345 #

Check-out https://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/PhoneLinks.html

-Adam

+0

Sự cố với phương thức tel: // là lời nhắc Quay số/Hủy bỏ khiến iPhone bỏ qua bất kỳ dtmf nào qua số. Bạn có mã nơi bạn thành công quá khứ dtmf qua số thực tế? –

+0

Báo cáo dường như chỉ ra rằng tel: url từ một trang web bị vấn đề đó, nhưng các ứng dụng thực không: http://forums.macrumors.com/showthread.php?t=484177 Bạn đang cố tạo ứng dụng iPhone, hoặc webapp? –

+0

Đây là một ứng dụng dựa trên nền tảng SDK nhưng thử nghiệm ban đầu của tôi là xung quanh trang tel: // calls. Tôi sẽ thử DTMF trong SDK –

-1

Bạn không thể thực hiện việc này. SDK không cho phép bạn kiểm soát chức năng của điện thoại ở cấp độ chi tiết này.

0

Thực ra, tôi chỉ thử 555-555-4822 EXT 8030

và dường như truyền một số âm thậm chí sau khi nhấn quay số (số p đại diện cho số giây trễ). Tuy nhiên, các tông màu không được đáp ứng trên đầu xa như mong đợi, vì vậy một cái gì đó vẫn không ổn.

Tính năng này hoạt động, tuy nhiên nó dễ bị lỗi thời gian hơn là tel: 555-555-4822, 8030. Điều này chỉ tạm dừng trong một giây (, sẽ là hai giây) sau khi kết nối và sau đó phát 8030 tông

2

mỗi nhà phát triển liên kết Apple của Adam ở trên, có liên kết RFC này giải thích thêm về các tùy chọn khác nhau cho một chương trình liên kết điện thoại mà iPhone hỗ trợ -

http://www.ietf.org/rfc/rfc2806.txt

này ít nhất cho phép bạn chèn tạm dừng bằng 'p' trong URL, nhưng nhiều tùy chọn được chỉ định (nhưng không phải tất cả yêu cầu) cho RFC. Những gì khác hoạt động?

18

Tôi không biết tại sao mọi người lại nói bạn không thể ... bạn CAN!

NSString *phoneNumber = @"15555551212"; 
NSString *dtmfAfterPickup = @"1234"; 
NSString *telString = [NSString stringWithFormat:@"tel:%@,%@", phoneNumber, dtmfAfterPickup]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:telString]]; 

này sẽ quay PhoneNumber bỏ qua dial/hủy nhanh chóng ...1 giây sau khi cuộc gọi được trả lời, các số dtmfAfterPickup sẽ tự động được quay số.

của nó là một ý tưởng tốt để detect whether or not the device support phone calls

+0

bạn có thể thêm tạm dừng thêm 1 giây bằng cách chèn dấu phẩy vào chuỗi dtmfAfterPickup. NSString * dtmfAfterPickup = @ "1,2,3,4"; Việc này sẽ thêm 1 giây tạm dừng sau mỗi số – AlBeebe

+0

Có cách nào để ghi lại cuộc trò chuyện điện thoại bằng API không? –

+1

Không có cách nào để ghi lại cuộc gọi điện thoại có sẵn trong SDK iOS – AlBeebe

1

Tôi đã thử với iPhone của tôi sử dụng CoronaSDK và OpenURL API. Nó hoạt động rất tốt! Chỉ cần làm: system.openURL ("tel: [phonenumber], 123"). Bạn có thể đợi nhiều hơn bằng dấu phẩy cộng. Đã thử nghiệm với Corona SDK/iOS7.

Các vấn đề liên quan