ios

  • : 导入Objective-C类对象
  • newObject: 创建实例对象
  • : 销毁实例对象
  • invoke: 调用对象(类对象/示例对象)的方法
  • : 实现代理的方法
  • currentWebview: 获取当前Webview窗口对象的native层UIWebview实例对象

对象:

权限:

5+功能模块(permissions)

importClass

导入Objective-C类对象

  1. ClassObject plus.ios.importClass( String classname );

说明:

导入类对象后,就可以通过.操作符直接调用对象(类对象/实例对象)的方法。通过.操作符号调用方法时,不需要使用":"来分割参数。注意:导入类对象将会消耗较多的系统资源,不应该导入过多的类对象,可以使用plus.ios.invoke()来调用未导入类实例对象的方法。

参数:

  • classname: (String|)必选 要导入的Objective-C类名如果指定的类名不存在,则导入类失败,不会抛出异常。

返回值:

ClassObject: Objective-C类对象,如果导入类对象失败则返回null。

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <title>iOS Native.js</title>
  7. <script type="text/javascript">
  8. // 监听plusready事件
  9. document.addEventListener( "plusready", function(){
  10. // 扩展API加载完毕,现在可以正常调用扩展API
  11. // 导入GKLocalPlayer
  12. var GKLocalPlayer = plus.ios.importClass("GKLocalPlayer");
  13. }, false );
  14. </script>
  15. </head>
  16. <body>
  17. </body>
  18. </html>

newObject

创建实例对象

参数:

  • classname: (String)必选 要创建实例对象的类名如果指定的类名不存在,则创建对象失败,不会抛出异常。
  • args: (Object)可选 创建实例对象的构造参数如果指定的构造参数类型不区配,则创建对象失败,不会抛出异常。

返回值:

InstanceObject: Objective-C实例对象,如果创建对象失败则返回null。

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <title>iOS Native.js</title>
  7. <script type="text/javascript">
  8. // 监听plusready事件
  9. document.addEventListener( "plusready", function(){
  10. // 扩展API加载完毕,现在可以正常调用扩展API
  11. // 创建GKLocalPlayer类的一个实例对象
  12. var localplayer = plus.ios.newObject("GKLocalPlayer");
  13. }, false );
  14. </script>
  15. </head>
  16. <body>
  17. </body>
  18. </html>

deleteObject

销毁实例对象

  1. void plus.ios.deleteObject( Object obj );

参数:

  • obj: (Object)必选 要销毁的实例对象如果obj对象不是有效的实例对象,则不执行销毁对象操作,不会抛出异常。如果不执行销毁实例对象操作,在页面关闭时会自动执行销毁对象的操作。

void: 无

示例:

invoke

调用对象(类对象/示例对象)的方法

  1. Object plus.ios.invoke( Object obj, String name, Object... args );

参数:

  • obj: (InstanceObject||String)必选 调用方法所属的对象,也可以是类的名称如果obj为实例对象(InstanceObject)类型,则调用的是实例对象的方法;如果obj为类对象(ClassObject)类型,则调用的是类的静态方法;如果obj为字符串(String)类型,其值必须是类的名称,则调用的是类的静态方法;
  • name: (String)必选 要调用的方法名称方法名称中使用":"分隔参数。如果指定的方法名称不存在,则调用方法失败,不会抛出异常。
  • args: (Object)可选 调用方法的参数如果指定的参数数目或类型不区配,则调用方法失败,不会抛出异常。

返回值:

Object: 调用方法的返回值,如果调用方法失败,则返回null。

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  5. <title>iOS Native.js</title>
  6. <script type="text/javascript">
  7. // 监听plusready事件
  8. document.addEventListener( "plusready", function(){
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10.   // 创建UIAlertView类的实例对象
  11.   var view = plus.ios.newObject("UIAlertView");
  12.   // 设置提示对话上的内容,这里的方法名称中必须包含':'字符
  13.   plus.ios.invoke(view,"initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:"
  14.    , "自定义标题" // 提示框标题
  15.    , "使用NJS的原生弹出框,可自定义弹出框的标题、按钮" // 提示框上显示的内容
  16.    , null // 操作提示框后的通知代理对象,暂不设置
  17.    , "确定(或者其他字符)" // 提示框上取消按钮的文字
  18.    , null ); // 提示框上其它按钮的文字,设置为null表示不显示
  19.   // 调用show方法显示提示对话框,在JS中使用()语法调用对象的方法
  20.   plus.ios.invoke(view,"show");
  21. }, false );
  22. </script>
  23. </head>
  24. <body>
  25. </body>
  26. </html>

uni-app使用plus注意事项

implements

实现代理的方法

  1. InstanceObject plus.ios.implements( String name, Object obj );

参数:

  • name: (String)必选 代理的名称,也可以是自定的字符串名称如果name为自定的字符串名称,则自定义一个代理;
  • obj: _(Object)必选 _JSON对象类型,代理实现方法的定义JSON对象中key值为代理方法的名称,使用":"分割参数;value值为Function,方法参数必须与代理方法中的":"区配。

返回值:

: 代理实例对象。

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <title>iOS Native.js</title>
  7. <script type="text/javascript">
  8. // 监听plusready事件
  9. // 扩展API加载完毕,现在可以正常调用扩展API
  10. // 登录到游戏中心
  11. // 监听用户登录状态变更事件
  12. var nc = NSNotificationCenter.defaultCenter();
  13. if(delegate){
  14. nc.removeObservernameobject(delegate,"GKPlayerAuthenticationDidChangeNotificationName",null);
  15. }
  16. delegate = plus.ios.implements("NSObject",{"authenticationChanged:":authenticationChanged});
  17. nc.addObserverselectornameobject(delegate,
  18. plus.ios.newObject("@selector","authenticationChanged:"),
  19. "GKPlayerAuthenticationDidChangeNotificationName",
  20. null);
  21. // 获取游戏玩家共享实例对象
  22. var localplayer = GKLocalPlayer.localPlayer();
  23. // 判断游戏玩家是否已经登录认证
  24. if ( localplayer.plusGetAttribute("isAuthenticated") ) {
  25. // 玩家已登录认证,获取玩家信息
  26. playerInformation( localplayer );
  27. } else {
  28. // 玩家未登录认证,发起认证请求
  29. localplayer.authenticateWithCompletionHandler(null);
  30. eStart.innerText = "登录中...";
  31. }
  32. // 释放使用的对象
  33. plus.ios.deleteObject(localplayer);
  34. plus.ios.deleteObject(nc);
  35. }, false );
  36. </script>
  37. </head>
  38. <body>
  39. </body>
  40. </html>

uni-app使用plus注意事项

currentWebview

获取当前Webview窗口对象的native层UIWebview实例对象

  1. InstanceObject plus.ios.currentWebview();

说明:

UIWebview对象的API请参考Apple开发文档

参数:

返回值:

InstanceObject: Webview窗口对象的native层实例对象,如果调用方法失败,则返回null。

ClassObject

Objective-C类对象

  1. interface ClassObject {
  2. // ...
  3. }

说明:

Objective-C类对象,可通过其属性获取类的常量,可通过方法来操作类的静态方法,也通过new方法来创建类的实例对象。对于类的静态方法,则直接通过.后面跟随方法名称调用。

示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <title>iOS Native.js</title>
  7. <script type="text/javascript">
  8. // 监听plusready事件
  9. document.addEventListener( "plusready", function(){
  10. // 扩展API加载完毕,现在可以正常调用扩展API
  11. // 调用ios的文字转语音
  12. var AVSpeechSynthesizer = plus.ios.importClass("AVSpeechSynthesizer");
  13. var sppech = new AVSpeechSynthesizer(); // 实例化AVSpeechSynthesizer类对象
  14. // ...
  15. }, false );
  16. </script>
  17. </head>
  18. <body>
  19. </body>
  20. </html>

InstanceObject

Objective-C实例对象

  1. interface InstanceObject {
  2. // ...
  3. function Object plusGetAttribute( String name );
  4. function Object plusSetAttribute( String name, Object value );
  5. // ...
  6. }

说明:

Objective-C实例对象,可通过其方法来操作示例的变量和方法。注意:必须通过plusGetAttribute()方法读取示例对象的属性值,通过plusSetAttribute()方法设置示例对象的属性值。

方法:

  • plusGetAttribute: 获取Objective-C实例对象的属性
  • : 设置Objective-C示例对象的属性

plusGetAttribute

获取Objective-C实例对象的属性


Object insobj.plusGetAttribute( String name );
                        

参数:

  • name: (String)必选 实例属性的名称如果指定的属性名称不存在,则返回null。

返回值:

Object: 属性的实例对象

示例:


<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    <title>iOS Native.js</title>
    <script type="text/javascript">
// 监听plusready事件  
document.addEventListener( "plusready", function(){
    // 扩展API加载完毕,现在可以正常调用扩展API
    // 登录到游戏中心
    // 监听用户登录状态变更事件
    var nc = NSNotificationCenter.defaultCenter();
    if(delegate){
        nc.removeObservernameobject(delegate,"GKPlayerAuthenticationDidChangeNotificationName",null);
    }
    delegate = plus.ios.implements("NSObject",{"authenticationChanged:":authenticationChanged});
    nc.addObserverselectornameobject(delegate,
        plus.ios.newObject("@selector","authenticationChanged:"),
        "GKPlayerAuthenticationDidChangeNotificationName",
        null);
    // 获取游戏玩家共享实例对象
    var localplayer = GKLocalPlayer.localPlayer();
    // 判断游戏玩家是否已经登录认证
    if ( localplayer.plusGetAttribute("isAuthenticated") ) {
        // 玩家已登录认证,获取玩家信息
        playerInformation( localplayer );
        bLogin = true;
    } else {
        // 玩家未登录认证,发起认证请求
        localplayer.authenticateWithCompletionHandler(null);
        eStart.innerText = "登录中...";
    }
    // 释放使用的对象
    plus.ios.deleteObject(localplayer);
    plus.ios.deleteObject(nc);
}, false );
    </script>
    </head>
    <body>
    </body>
</html>
                        

uni-app使用plus注意事项

plusSetAttribute

设置Objective-C示例对象的属性

参数:

  • name: (String)必选 要设置的属性名称如果指定的属性名称不存在,则操作不生效,不会抛出异常。

返回值:

void: 无

示例: