亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁 > IT技術(shù) > 移動平臺 > 正文

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富
              2021-08-08 17:39:07

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_ios

              「森的森」愛讀詩歌的六年老碼農(nóng)
              從 Cocos2d-x 到 Cocos Creator 寫過數(shù)款網(wǎng)絡(luò)游戲
              平時也會發(fā)布一些貼子到 Cocos 論壇
              時不時會發(fā)一些 Demo 和插件
              今天受曉衡哥邀請,來介紹一下我的“NativeAPI”
              注意!這不是游戲
              截圖有點(diǎn)樸素,請無視!

              一、NativeAPI 是什么?

              無須定制引擎,通過反射機(jī)制封裝了一些通用原生接口,支持 iOS、Android 并測試通過。接口包含:

              1. 獲取設(shè)備名稱
              2. 系統(tǒng)類型
              3. 操作系統(tǒng)版本
              4. 設(shè)備識別碼(游客登錄可以用此標(biāo)識)
              5. App 版本號
              6. App Vercode
              7. 電池電量
              8. 網(wǎng)絡(luò)狀態(tài)
              9. 復(fù)制文字到粘貼板
              10. 獲取當(dāng)前粘貼板內(nèi)容
              11. 選擇相冊等
              12. 打開 QQ、微信
              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_xml_02Demo 演示

              整個工程代碼是相當(dāng)?shù)囊?guī)范,使用方法是相當(dāng)詳細(xì),不論是學(xué)習(xí)還是原生 SDK 接入都會對你有很大的幫助!

              二、SDK 接口代碼

              NativeAPI 提供的 Demo 工程可以在 iOS、Android 端運(yùn)行,但是可能要根據(jù)自己的 Cocos 引擎配置做相關(guān)更改。Demo 是基于 Cocos Creator 2.3.4 創(chuàng)建,但是關(guān)鍵代碼可運(yùn)行在任何版本Cocos Creator中。

              如果有 iOS 安卓原生基礎(chǔ),可直接看關(guān)鍵代碼文件夾中的文件,所以需要的代碼都在里面。封裝接口一覽:

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_2d_03

              在項(xiàng)目中需要調(diào)用的地方,導(dǎo)入 DeviceModule.js 調(diào)用其方法即可,詳細(xì)請看 Demo 中測試用法。

              三、Android 配置流程

              1. 導(dǎo)入 Java 代碼

              首先將關(guān)鍵代碼文件夾中 DeviceModule.java 和 ModifyImageActivity.java 兩個文件放到項(xiàng)目AppActivity.java 同層級位置。

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_xml_04NativeAPI-Android Java接口文件

              例如 Demo 工程路徑:../NativeApi/build/jsb-link/frameworks/runtime-src/proj.android-studio/src/org/cocos2dx/javascript

              2. 初始化DeviceModule

              然后需要在 AppActivity.java 的 onCreate 方法中調(diào)用初始化 DeviceModule。

              DeviceModule.setContext(this);
              

              具體代碼,可參考關(guān)鍵代碼中的 AppActivity.java 文件。

              3. 配置權(quán)限

              打開 Android 工程 AndroidManiefst.xml 文件,文件在:../NativeApi/build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml

              調(diào)用手機(jī)震動接口,添加權(quán)限:

              <uses-permission android:name="android.permission.VIBRATE"/>
              

              選擇相冊,添加權(quán)限:

              <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
              

              還需要在 AndroidManifest.xml 配置 activity:

              <activity
                        android:name="org.cocos2dx.javascript.ModifyImageActivity"
                        android:configChanges="orientation|keyboardHidden|screenSize"
                        android:exported="true"
                        android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity>
              

              4. 在 JS 使用

              最后 js 代碼中直接引用 DeviceModule.js 調(diào)用接口方法即可,如下代碼:

              //電池電量
              onBtnBatteryLevel: function () {
                  let level ='電池電量' + parseInt(100 * gg.device.getBatteryLevel());
                  this.labelTips.string = level;
                  gg.showAlert(level);
              }
              

              更詳細(xì)配置用法請參考 Demo 中調(diào)用方法。

              四、iOS 配置流程

              1. 導(dǎo)入文件

              把關(guān)鍵代碼中的ios對應(yīng)的 .h 和 .m,.mm 等文件拷貝到項(xiàng)目中。

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_ios_05NativeAPI-iOS接口文件

              例如 Demo 工程路徑:../NativeApi/build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/

              2. 添加文件到 Xcode

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_2d_06image-20201027101451226

              在Xcode中添加這些文件到項(xiàng)目,這樣編譯的時候,才會編譯到這些文件。

              3. 添加相冊權(quán)限

              使用相冊需要添加相冊權(quán)限,在 info.plist 中添加 Privacy - Photo Library Usage Description權(quán)限,看下圖:

              Native API 真香警告!手機(jī)原生功能調(diào)用來啦...接口豐富_java_07添加像冊權(quán)限?

              4. 橫屏設(shè)置

              如果您是橫板游戲,而且需要使用相冊選擇圖片功能,則需要做以下操作。在AppController.h中添加代碼:

              // 橫豎屏設(shè)置
              @property (nonatomic,assign) NSInteger MyInterfaceOrientationMask;
              

              在 AppController.mm 的 didFinishLaunchingWithOptions 方法中添加代碼:

              - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
                  ...
                  //設(shè)置初始屏幕方向
                  _MyInterfaceOrientationMask = UIInterfaceOrientationMaskLandscape;
                  //添加修改橫豎屏事件監(jiān)聽
                  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeRotate:) name:@"changeRotate" object:nil];
                  [window makeKeyAndVisible];
                	...
              }
              

              在 AppController.mm 中添加兩個函數(shù):

              /**
               橫豎屏設(shè)置
               @param noti 0: 設(shè)置為橫屏
              */
              - (void)changeRotate:(NSNotification *)noti
              {
                  if ([noti.object isEqualToString:@"0"])
              		{
                  		//橫屏設(shè)置    
                      _MyInterfaceOrientationMask = UIInterfaceOrientationMaskLandscape;
                  }
                  else
                  {
                      _MyInterfaceOrientationMask = UIInterfaceOrientationMaskAll;
                  }
              }
              
              - (void)statusBarOrientationChanged:(NSNotification *)notification {
                  CGRect bounds = [UIScreen mainScreen].bounds;
                  float scale = [[UIScreen mainScreen] scale];
                  float width = bounds.size.width * scale;
                  float height = bounds.size.height * scale;
                  Application::getInstance()->updateViewSize(width, height);
              }
              
              - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
              {
                  return _MyInterfaceOrientationMask;
              }
              

              本文摘自 :https://blog.51cto.com/u

              開通會員,享受整站包年服務(wù)立即開通 >