iOS 10中的Whatsapp集成和openURL问题

Rag*_*kar 2 objective-c openurl ios whatsapp ios10

我在我的iOS应用程序中集成了whastapp.当我在iOS 10设备上测试它时.它崩溃了一个问题.

快照未呈现的视图会导致空快照.确保在屏幕更新后快照或快照之前至少渲染了一次视图.

NSURL *whatsappURL = [NSURL URLWithString:[NSString stringWithFormat: @"whatsapp://send?abid=%@&text=WelcomeToChatBought",[abidArray objectAtIndex:buttonclicked.tag-1000]]];
        if ([[UIApplication sharedApplication] canOpenURL: whatsappURL])
        {
            [[UIApplication sharedApplication] openURL: whatsappURL];
        }
Run Code Online (Sandbox Code Playgroud)

可能是什么问题.任何帮助,将不胜感激.

Ron*_*ara 5

LSApplicationQueriesSchemes如果没有设置,你需要在plist中设置:

喜欢,

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>urlscheme1</string>
 <string>urlscheme2</string>

</array> 
Run Code Online (Sandbox Code Playgroud)

另请注意,iOS 10中不推荐使用openURL(_ :).

新的UIApplication方法openURL:options:completionHandler:,它是异步执行的,并在主队列上调用指定的完成处理程序(此方法替换openURL :).

新方法iOS 10:

- (void)openURL:(NSURL*)url options:(NSDictionary<NSString *, id> *)options
  completionHandler:(void (^ __nullable)(BOOL success))completion
Run Code Online (Sandbox Code Playgroud)

参数:

  • URL

  • 选项字典(有关条目,请参见下文).使用空字典表示相同的行为openURL:.

  • 完成处理程序在主队列上调用成功.Nullable如果你对状态不感兴趣.

喜欢,

UIApplication *application = [UIApplication sharedApplication];
[application openURL:URL options:@{} completionHandler:nil];
Run Code Online (Sandbox Code Playgroud)

例:

NSString *scheme=[NSString stringWithFormat: @"whatsapp://send?abid=%@&text=WelcomeToChatBought",[abidArray objectAtIndex:buttonclicked.tag-1000]]];

  UIApplication *application = [UIApplication sharedApplication];
  NSURL *URL = [NSURL URLWithString:scheme];

  if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [application openURL:URL options:@{}
       completionHandler:^(BOOL success) {
      NSLog(@"Open %@: %d",scheme,success);
    }];
  } else {
    BOOL success = [application openURL:URL];
    NSLog(@"Open %@: %d",scheme,success);
  }
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多:

http://useyourloaf.com/blog/openurl-deprecated-in-ios10/

编辑:(基于iOS版本的代码)

NSURL *URL = [NSURL URLWithString:strUrl];

if([[UIDevice currentDevice].systemVersion floatValue] >= 10.0){

  if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
    [application openURL:URL options:@{}
       completionHandler:^(BOOL success) {
      NSLog(@"Open %@: %d",scheme,success);
    }];
  } else {
    BOOL success = [application openURL:URL];
    NSLog(@"Open %@: %d",scheme,success);
  }


}
else{

  bool can = [[UIApplication sharedApplication] canOpenURL:URL];

  if(can){

     [[UIApplication sharedApplication] openURL:URL];

  }

}
Run Code Online (Sandbox Code Playgroud)