سؤال

كيف يمكنني إجراء مكالمة من داخل التطبيق أو تشغيل تطبيق فور انتهاء المكالمة؟ أعلم أن هذا ممكن لأن بعض التطبيقات في متجر التطبيقات تقوم بذلك بالفعل.

هل كانت مفيدة؟

المحلول

حصلت على هذا الرمز من موقع Apple وهو يعمل بشكل مثالي:

-(IBAction) dialNumber:(id)sender{

NSString *aPhoneNo = [@"tel://" stringByAppendingString:[itsPhoneNoArray objectAtIndex:[sender tag]]] ; NSURL *url= [NSURL URLWithString:aPhoneNo];
 NSURL  *url= [NSURL URLWithString:aPhoneNo];
NSString *osVersion = [[UIDevice currentDevice] systemVersion];

if ([osVersion floatValue] >= 3.1) { 
UIWebView *webview = [[UIWebView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
[webview loadRequest:[NSURLRequest requestWithURL:url]]; 
webview.hidden = YES; 
// Assume we are in a view controller and have access to self.view 
[self.view addSubview:webview]; 
[webview release]; 
} else { 
// On 3.0 and below, dial as usual 
[[UIApplication sharedApplication] openURL: url];
}


}

نصائح أخرى

أعتقد أن هناك جزأين لهذا

  1. يتم تشغيل التطبيق بالفعل ، ويتلقى المستخدم موجهًا يشير إلى وجود مكالمة هاتفية ، ويطلب من قبول أو رفض
  2. يتلقى المستخدم مكالمة هاتفية ، لكن التطبيق لا يعمل

في الحالة الأولى ، الخاص بك UiapplicationDelegate سوف تتلقى الرسائل application:willChangeStatusBarFrame:, application:didChangeStatusBarFrame:, applicationWillResignActive:, ، و applicationDidBecomeActive: كل ما يحتمل أن يكون هناك عدة مرات يعتمد على ما إذا كان المستخدم يختار الإجابة على المكالمة أم لا ، وربما ، وربما applicationWillTerminate: إذا اختاروا ترك طلبك أم لا. يمكنك أيضًا مراقبة هذه الأحداث باستخدام nsnotificalcenter من فئة غير مسجلة كمندوب التطبيق ، راجع قسم "الإخطارات" في uiapplication مرجع الفصل للحصول على التفاصيل.

في الحالة الثانية ، لا أعرف أن هناك SDK الرسمي لإطلاق طلبك عند انتهاء مكالمة هاتفية. هل يمكنك تقديم قائمة بالتطبيقات التي تقوم بذلك؟

تعديل:

أعتقد أنني أفهم ما تعنيه الآن. يجب عليك اتباع النصيحة من JesseCurry ، openURL تشغيل UIApplication مع tel: بروتوكول سيجري مكالمة هاتفية. فيما يتعلق بمطالبتهم بـ "القيام بالمستحيل" وعدم الإقلاع عن التطبيق عند إجراء المكالمة الهاتفية ، لست متأكدًا من كيفية فعلهم لأنني لم أكتبها. يمكن أن يستخدموا خدمة VoIP خارجية مثل Skype ، أو ببساطة تحميل tel: عنوان URL داخل ورقة ويب غير مرئية. لا أحدهما يمكنني التعليق عليه لأنني لم أجربه.

يتم ذلك باستخدام Telprompt بدلاً من Tel. يرجى إلقاء نظرة على الرمز التالي

[uiapplication sharblication] OpenUrl: [nsurl urlwithString:@"telprompt: 18004912200"] ؛

إذا كنت ترغب في إجراء مكالمة من داخل التطبيق الخاص بك ، يمكنك استخدام ملف tel: عنوان URL.

فيما يلي طريقة تأخذ رقم هاتف كسلسلة وتبدأ مكالمة.

- (void)dialNumber: (NSString*)telNumber
{
    // fix telNumber NSString
    NSArray* telComponents = [telNumber componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
    telNumber = [telComponents componentsJoinedByString: @""];

    NSString* urlString = [NSString stringWithFormat: @"tel:%@", telNumber];
    NSURL* telURL = [NSURL URLWithString: urlString];
    //NSLog( @"Attempting to dial %@ with urlString: %@ and URL: %@", telNumber, urlString, telURL );

    if ( [[UIApplication sharedApplication] canOpenURL: telURL] )
    {
        [[UIApplication sharedApplication] openURL: telURL];
    }
    else
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle: NSLocalizedString( @"Dialer Error", @"" ) 
                                                        message: [NSString stringWithFormat: NSLocalizedString( @"There was a problem dialing %@.", @"" ), telNumber] 
                                                       delegate: nil 
                                              cancelButtonTitle: NSLocalizedString( @"OK", @"" ) 
                                              otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top