From 708a1c082232c4296cfbad0511cf505249762ab3 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Mon, 22 Mar 2021 17:47:49 +0800 Subject: [PATCH 01/12] use onUserJoined instead of firstRemoteVideoDecoded for setup remote video --- .../io/agora/openvcall/ui/CallActivity.java | 2 +- .../OpenVideoCall.xcodeproj/project.pbxproj | 92 ++++++++++++------- .../OpenVideoCall/RoomViewController.m | 4 + .../OpenVideoCall/RoomViewController.swift | 7 +- .../OpenVideoCall/RoomViewController.swift | 14 ++- .../VideoChatViewActivity.java | 18 +--- .../VideoChatViewController.m | 11 +-- .../VideoChatViewController.swift | 16 +--- .../project.pbxproj | 44 +++------ .../VideoEngine.swift | 13 +-- .../VideoChatViewController.m | 2 +- .../VideoChatViewController.swift | 8 +- 12 files changed, 106 insertions(+), 125 deletions(-) diff --git a/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/CallActivity.java b/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/CallActivity.java index 47787fd1..d79c2022 100644 --- a/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/CallActivity.java +++ b/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/CallActivity.java @@ -524,6 +524,7 @@ public void onMixingAudioClicked(View view) { @Override public void onUserJoined(int uid) { log.debug("onUserJoined " + (uid & 0xFFFFFFFFL)); + doRenderRemoteUi(uid); runOnUiThread(new Runnable() { @Override @@ -537,7 +538,6 @@ public void run() { public void onFirstRemoteVideoDecoded(int uid, int width, int height, int elapsed) { log.debug("onFirstRemoteVideoDecoded " + (uid & 0xFFFFFFFFL) + " " + width + " " + height + " " + elapsed); - doRenderRemoteUi(uid); } private void doRenderRemoteUi(final int uid) { diff --git a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj index 13438b22..802d8f6f 100644 --- a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj +++ b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj @@ -3,16 +3,10 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ - 03CE910325436185009945C0 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FE2543616C009945C0 /* Agorafdkaac.framework */; }; - 03CE910425436185009945C0 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FE2543616C009945C0 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03CE910525436185009945C0 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FF2543616C009945C0 /* Agoraffmpeg.framework */; }; - 03CE910625436185009945C0 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FF2543616C009945C0 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03CE910725436186009945C0 /* AgoraSoundTouch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FD2543616C009945C0 /* AgoraSoundTouch.framework */; }; - 03CE910825436186009945C0 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90FD2543616C009945C0 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 076C59771DDDBC3500F813E2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 076C59761DDDBC3500F813E2 /* main.m */; }; 076C597A1DDDBC3500F813E2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 076C59791DDDBC3500F813E2 /* AppDelegate.m */; }; 076C59821DDDBC3500F813E2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 076C59811DDDBC3500F813E2 /* Assets.xcassets */; }; @@ -28,11 +22,22 @@ 3832FA5F227FC9DA00E50E69 /* FileCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3832FA5E227FC9DA00E50E69 /* FileCenter.m */; }; 3832FA67227FF94300E50E69 /* Them.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 3832FA66227FF94200E50E69 /* Them.mp3 */; }; 38EF7E902368269600A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E8F2368269600A6A483 /* README.md */; }; + 8B4B011A26088A06004EF20F /* AgoraSoundTouch.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011326088A05004EF20F /* AgoraSoundTouch.xcframework */; }; + 8B4B012126088DFD004EF20F /* AgoraAIDenoiseExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011726088A06004EF20F /* AgoraAIDenoiseExtension.xcframework */; }; + 8B4B012226088DFD004EF20F /* AgoraAIDenoiseExtension.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011726088A06004EF20F /* AgoraAIDenoiseExtension.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B4B012426088DFE004EF20F /* AgoraCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011226088A05004EF20F /* AgoraCore.xcframework */; }; + 8B4B012526088DFE004EF20F /* AgoraCore.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011226088A05004EF20F /* AgoraCore.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B4B012626088DFF004EF20F /* AgoraDav1dExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011526088A05004EF20F /* AgoraDav1dExtension.xcframework */; }; + 8B4B012726088DFF004EF20F /* AgoraDav1dExtension.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011526088A05004EF20F /* AgoraDav1dExtension.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B4B012826088E00004EF20F /* Agorafdkaac.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011626088A05004EF20F /* Agorafdkaac.xcframework */; }; + 8B4B012926088E00004EF20F /* Agorafdkaac.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011626088A05004EF20F /* Agorafdkaac.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B4B012A26088E01004EF20F /* Agoraffmpeg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011826088A06004EF20F /* Agoraffmpeg.xcframework */; }; + 8B4B012B26088E02004EF20F /* Agoraffmpeg.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011826088A06004EF20F /* Agoraffmpeg.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B4B012C26088E03004EF20F /* AgoraRtcKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011426088A05004EF20F /* AgoraRtcKit.xcframework */; }; + 8B4B012D26088E03004EF20F /* AgoraRtcKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B4B011426088A05004EF20F /* AgoraRtcKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A7327ECE1FC7B5E300882882 /* Encryption.m in Sources */ = {isa = PBXBuildFile; fileRef = A7327ECD1FC7B5E300882882 /* Encryption.m */; }; A7327ED41FC7C7DB00882882 /* MessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A7327ED31FC7C7DB00882882 /* MessageCell.m */; }; A7327ED71FC7C7EE00882882 /* Message.m in Sources */ = {isa = PBXBuildFile; fileRef = A7327ED61FC7C7EE00882882 /* Message.m */; }; - A79114A0246D127400E77A35 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A76C26C5238684C20047E150 /* AgoraRtcKit.framework */; }; - A79114A1246D127400E77A35 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A76C26C5238684C20047E150 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A7FB1B6222A638500027986E /* Settings.m in Sources */ = {isa = PBXBuildFile; fileRef = A7FB1B6122A638500027986E /* Settings.m */; }; A7FB1B6822A640680027986E /* CommonExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = A7FB1B6722A640680027986E /* CommonExtension.m */; }; A7FB1B6B22A6437B0027986E /* MediaCharater.m in Sources */ = {isa = PBXBuildFile; fileRef = A7FB1B6A22A6437B0027986E /* MediaCharater.m */; }; @@ -44,16 +49,18 @@ /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - A791149F246D127300E77A35 /* Embed Frameworks */ = { + 8B4B012326088DFD004EF20F /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - A79114A1246D127400E77A35 /* AgoraRtcKit.framework in Embed Frameworks */, - 03CE910625436185009945C0 /* Agoraffmpeg.framework in Embed Frameworks */, - 03CE910425436185009945C0 /* Agorafdkaac.framework in Embed Frameworks */, - 03CE910825436186009945C0 /* AgoraSoundTouch.framework in Embed Frameworks */, + 8B4B012726088DFF004EF20F /* AgoraDav1dExtension.xcframework in Embed Frameworks */, + 8B4B012226088DFD004EF20F /* AgoraAIDenoiseExtension.xcframework in Embed Frameworks */, + 8B4B012926088E00004EF20F /* Agorafdkaac.xcframework in Embed Frameworks */, + 8B4B012526088DFE004EF20F /* AgoraCore.xcframework in Embed Frameworks */, + 8B4B012B26088E02004EF20F /* Agoraffmpeg.xcframework in Embed Frameworks */, + 8B4B012D26088E03004EF20F /* AgoraRtcKit.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -61,9 +68,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CE90FD2543616C009945C0 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraSoundTouch.framework; sourceTree = ""; }; - 03CE90FE2543616C009945C0 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agorafdkaac.framework; sourceTree = ""; }; - 03CE90FF2543616C009945C0 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agoraffmpeg.framework; sourceTree = ""; }; 076C59721DDDBC3500F813E2 /* OpenVideoCall.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenVideoCall.app; sourceTree = BUILT_PRODUCTS_DIR; }; 076C59761DDDBC3500F813E2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 076C59781DDDBC3500F813E2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -101,6 +105,13 @@ 385F305A2122CB13005D5301 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 38D619352250BF34004A6C87 /* CoreML.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreML.framework; path = System/Library/Frameworks/CoreML.framework; sourceTree = SDKROOT; }; 38EF7E8F2368269600A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 8B4B011226088A05004EF20F /* AgoraCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraCore.xcframework; sourceTree = ""; }; + 8B4B011326088A05004EF20F /* AgoraSoundTouch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraSoundTouch.xcframework; sourceTree = ""; }; + 8B4B011426088A05004EF20F /* AgoraRtcKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraRtcKit.xcframework; sourceTree = ""; }; + 8B4B011526088A05004EF20F /* AgoraDav1dExtension.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraDav1dExtension.xcframework; sourceTree = ""; }; + 8B4B011626088A05004EF20F /* Agorafdkaac.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agorafdkaac.xcframework; sourceTree = ""; }; + 8B4B011726088A06004EF20F /* AgoraAIDenoiseExtension.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraAIDenoiseExtension.xcframework; sourceTree = ""; }; + 8B4B011826088A06004EF20F /* Agoraffmpeg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agoraffmpeg.xcframework; sourceTree = ""; }; A7327ECC1FC7B5E300882882 /* Encryption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Encryption.h; sourceTree = ""; }; A7327ECD1FC7B5E300882882 /* Encryption.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Encryption.m; sourceTree = ""; }; A7327ED21FC7C7DB00882882 /* MessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageCell.h; sourceTree = ""; }; @@ -109,7 +120,6 @@ A7327ED61FC7C7EE00882882 /* Message.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Message.m; sourceTree = ""; }; A76C26C5238684C20047E150 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcKit.framework; path = OpenVideoCall/AgoraRtcKit.framework; sourceTree = ""; }; A76C26C6238684C20047E150 /* AgoraRtcCryptoLoader.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcCryptoLoader.framework; path = OpenVideoCall/AgoraRtcCryptoLoader.framework; sourceTree = ""; }; - A76C26CD238684CB0047E150 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraRtcKit.framework; sourceTree = ""; }; A7733D6324079BEF00483870 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = OpenVideoCall/libcrypto.a; sourceTree = ""; }; A7733D6B24079C2B00483870 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; A7FB1B6022A638500027986E /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; @@ -134,10 +144,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 03CE910525436185009945C0 /* Agoraffmpeg.framework in Frameworks */, - A79114A0246D127400E77A35 /* AgoraRtcKit.framework in Frameworks */, - 03CE910325436185009945C0 /* Agorafdkaac.framework in Frameworks */, - 03CE910725436186009945C0 /* AgoraSoundTouch.framework in Frameworks */, + 8B4B012126088DFD004EF20F /* AgoraAIDenoiseExtension.xcframework in Frameworks */, + 8B4B012826088E00004EF20F /* Agorafdkaac.xcframework in Frameworks */, + 8B4B012C26088E03004EF20F /* AgoraRtcKit.xcframework in Frameworks */, + 8B4B011A26088A06004EF20F /* AgoraSoundTouch.xcframework in Frameworks */, + 8B4B012626088DFF004EF20F /* AgoraDav1dExtension.xcframework in Frameworks */, + 8B4B012426088DFE004EF20F /* AgoraCore.xcframework in Frameworks */, + 8B4B012A26088E01004EF20F /* Agoraffmpeg.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -165,14 +178,17 @@ 076C59741DDDBC3500F813E2 /* OpenVideoCall */ = { isa = PBXGroup; children = ( - 03CE90FE2543616C009945C0 /* Agorafdkaac.framework */, - 03CE90FF2543616C009945C0 /* Agoraffmpeg.framework */, - 03CE90FD2543616C009945C0 /* AgoraSoundTouch.framework */, + 8B4B011726088A06004EF20F /* AgoraAIDenoiseExtension.xcframework */, + 8B4B011226088A05004EF20F /* AgoraCore.xcframework */, + 8B4B011526088A05004EF20F /* AgoraDav1dExtension.xcframework */, + 8B4B011626088A05004EF20F /* Agorafdkaac.xcframework */, + 8B4B011826088A06004EF20F /* Agoraffmpeg.xcframework */, + 8B4B011426088A05004EF20F /* AgoraRtcKit.xcframework */, + 8B4B011326088A05004EF20F /* AgoraSoundTouch.xcframework */, 076C598F1DDDBCFE00F813E2 /* Controllers */, 076C59901DDDBD0600F813E2 /* Views */, 076C59911DDDBD0D00F813E2 /* Models */, 076C59751DDDBC3500F813E2 /* Supporting Files */, - A76C26CD238684CB0047E150 /* AgoraRtcKit.framework */, ); path = OpenVideoCall; sourceTree = ""; @@ -282,7 +298,7 @@ 076C596E1DDDBC3500F813E2 /* Sources */, 076C596F1DDDBC3500F813E2 /* Frameworks */, 076C59701DDDBC3500F813E2 /* Resources */, - A791149F246D127300E77A35 /* Embed Frameworks */, + 8B4B012326088DFD004EF20F /* Embed Frameworks */, ); buildRules = ( ); @@ -507,9 +523,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = GM72UGLGZW; + DEVELOPMENT_TEAM = JDPG69R49Z; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -517,7 +533,10 @@ ); INFOPLIST_FILE = OpenVideoCall/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/OpenVideoCall", @@ -525,7 +544,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "dc253ab3-71e4-40a3-a57c-a3a763407202"; - PROVISIONING_PROFILE_SPECIFIER = App; + PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -534,9 +553,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = GM72UGLGZW; + DEVELOPMENT_TEAM = JDPG69R49Z; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -544,7 +563,10 @@ ); INFOPLIST_FILE = OpenVideoCall/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/OpenVideoCall", @@ -552,7 +574,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "dc253ab3-71e4-40a3-a57c-a3a763407202"; - PROVISIONING_PROFILE_SPECIFIER = App; + PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall/RoomViewController.m b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall/RoomViewController.m index 24b7b871..104d2a1f 100644 --- a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall/RoomViewController.m +++ b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall/RoomViewController.m @@ -351,6 +351,10 @@ - (void)rtcEngine:(AgoraRtcEngineKit *)engine didOccurError:(AgoraErrorCode)erro - (void)rtcEngine:(AgoraRtcEngineKit *)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed { VideoSession *userSession = [self videoSessionOfUid:uid]; userSession.size = size; +} + +- (void)rtcEngine:(AgoraRtcEngineKit *)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed { + VideoSession *userSession = [self videoSessionOfUid:uid]; [self.agoraKit setupRemoteVideo:userSession.canvas]; } diff --git a/Group-Video/OpenVideoCall-iOS/OpenVideoCall/RoomViewController.swift b/Group-Video/OpenVideoCall-iOS/OpenVideoCall/RoomViewController.swift index d56cda48..bdeae2b7 100644 --- a/Group-Video/OpenVideoCall-iOS/OpenVideoCall/RoomViewController.swift +++ b/Group-Video/OpenVideoCall-iOS/OpenVideoCall/RoomViewController.swift @@ -285,8 +285,11 @@ extension RoomViewController: AgoraRtcEngineDelegate { alert(string: "Occur error: \(errorCode.rawValue)") } - // first remote video frame - func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid: UInt, size: CGSize, elapsed: Int) { + /// callback when a remote user is leaving the channel, note audience in live broadcast mode will NOT trigger this event + /// @param uid uid of remote joined user + /// @param reason reason why this user left, note this event may be triggered when the remote user + /// become an audience in live broadcasting profile + func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) { guard videoSessions.count <= maxVideoSession else { return } diff --git a/Group-Video/OpenVideoCall-macOS/OpenVideoCall/RoomViewController.swift b/Group-Video/OpenVideoCall-macOS/OpenVideoCall/RoomViewController.swift index fba9a961..abdeca60 100644 --- a/Group-Video/OpenVideoCall-macOS/OpenVideoCall/RoomViewController.swift +++ b/Group-Video/OpenVideoCall-macOS/OpenVideoCall/RoomViewController.swift @@ -482,15 +482,25 @@ extension RoomViewController: AgoraRtcEngineDelegate { selfSession.updateChannelStats(stats) } } - + // first remote video frame func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid: UInt, size: CGSize, elapsed: Int) { guard videoSessions.count < 5 else { return } - let userSession = videoSession(of: uid) userSession.updateInfo(resolution: size) + } + + /// callback when a remote user is leaving the channel, note audience in live broadcast mode will NOT trigger this event + /// @param uid uid of remote joined user + /// @param reason reason why this user left, note this event may be triggered when the remote user + /// become an audience in live broadcasting profile + func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) { + guard videoSessions.count < 5 else { + return + } + let userSession = videoSession(of: uid) agoraKit.setupRemoteVideo(userSession.canvas) } diff --git a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java index 27bee36a..36842b03 100644 --- a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java +++ b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java @@ -79,24 +79,8 @@ public void run() { }); } - /** - * Occurs when the first remote video frame is received and decoded. - * This callback is triggered in either of the following scenarios: - * - * The remote user joins the channel and sends the video stream. - * The remote user stops sending the video stream and re-sends it after 15 seconds. Possible reasons include: - * The remote user leaves channel. - * The remote user drops offline. - * The remote user calls the muteLocalVideoStream method. - * The remote user calls the disableVideo method. - * - * @param uid User ID of the remote user sending the video streams. - * @param width Width (pixels) of the video stream. - * @param height Height (pixels) of the video stream. - * @param elapsed Time elapsed (ms) from the local user calling the joinChannel method until this callback is triggered. - */ @Override - public void onFirstRemoteVideoDecoded(final int uid, int width, int height, int elapsed) { + public void onUserJoined(int uid) { runOnUiThread(new Runnable() { @Override public void run() { diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/Agora-iOS-Tutorial-Objective-C/VideoChatViewController.m b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/Agora-iOS-Tutorial-Objective-C/VideoChatViewController.m index fbac71f6..2a657430 100755 --- a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/Agora-iOS-Tutorial-Objective-C/VideoChatViewController.m +++ b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/Agora-iOS-Tutorial-Objective-C/VideoChatViewController.m @@ -77,20 +77,15 @@ - (void)joinChannel { } -/// Callback to handle the event such when the first frame of a remote video stream is decoded on the device. -/// @param engine - RTC engine instance -/// @param uid - user id -/// @param size - the height and width of the video frame -/// @param elapsed - lapsed Time elapsed (ms) from the local user calling JoinChannel method until the SDK triggers this callback. -- (void)rtcEngine:(AgoraRtcEngineKit *)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size: (CGSize)size elapsed:(NSInteger)elapsed { +- (void)rtcEngine:(AgoraRtcEngineKit *)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed { if (self.remoteVideo.hidden) { self.remoteVideo.hidden = NO; } - + AgoraRtcVideoCanvas *videoCanvas = [[AgoraRtcVideoCanvas alloc] init]; videoCanvas.uid = uid; // Since we are making a simple 1:1 video chat app, for simplicity sake, we are not storing the UIDs. You could use a mechanism such as an array to store the UIDs in a channel. - + videoCanvas.view = self.remoteVideo; videoCanvas.renderMode = AgoraVideoRenderModeHidden; [self.agoraKit setupRemoteVideo:videoCanvas]; diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial/VideoChatViewController.swift b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial/VideoChatViewController.swift index c380e77a..afe7ac7f 100755 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial/VideoChatViewController.swift +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial/VideoChatViewController.swift @@ -198,30 +198,24 @@ class VideoChatViewController: UIViewController { } extension VideoChatViewController: AgoraRtcEngineDelegate { - - /// Callback to handle the event when the first frame of a remote video stream is decoded on the device. - /// - Parameters: - /// - engine: RTC engine instance - /// - uid: user id - /// - size: the height and width of the video frame - /// - elapsed: Time elapsed (ms) from the local user calling JoinChannel method until the SDK triggers this callback. - func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid:UInt, size:CGSize, elapsed:Int) { + + func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { isRemoteVideoRender = true - + var parent: UIView = remoteContainer if let it = localVideo, let view = it.view { if view.superview == parent { parent = localContainer } } - + // Only one remote video view is available for this // tutorial. Here we check if there exists a surface // view tagged as this uid. if remoteVideo != nil { return } - + let view = UIView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: parent.frame.size)) remoteVideo = AgoraRtcVideoCanvas() remoteVideo!.view = view diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj index 739e7667..7bc8686a 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -18,22 +18,15 @@ 38101C792386AB0C005484F9 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38101C782386AB0C005484F9 /* AppID.swift */; }; 38101C8E2386C8D2005484F9 /* VideoEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38101C8D2386C8D2005484F9 /* VideoEngine.swift */; }; 38101C902386CC84005484F9 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38101C8F2386CC84005484F9 /* README.md */; }; - 8BF7443325A580A7007A0793 /* Agorafdkaac.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442E25A580A7007A0793 /* Agorafdkaac.xcframework */; }; - 8BF7443425A580A7007A0793 /* AgoraCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442F25A580A7007A0793 /* AgoraCore.xcframework */; }; - 8BF7443525A580A7007A0793 /* Agoraffmpeg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7443025A580A7007A0793 /* Agoraffmpeg.xcframework */; }; - 8BF7443725A580A7007A0793 /* AgoraSoundTouch.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7443225A580A7007A0793 /* AgoraSoundTouch.xcframework */; }; - 8BF7443825A580AE007A0793 /* AgoraRtcKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7443125A580A7007A0793 /* AgoraRtcKit.xcframework */; }; - 8BF7443925A580AE007A0793 /* AgoraRtcKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7443125A580A7007A0793 /* AgoraRtcKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - A7911491246D120300E77A35 /* Embed Frameworks */ = { + 8BC30CBB25EBE865009E2E1B /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 8BF7443925A580AE007A0793 /* AgoraRtcKit.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -54,11 +47,6 @@ 38101C782386AB0C005484F9 /* AppID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppID.swift; sourceTree = ""; }; 38101C8D2386C8D2005484F9 /* VideoEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoEngine.swift; sourceTree = ""; }; 38101C8F2386CC84005484F9 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 8BF7442E25A580A7007A0793 /* Agorafdkaac.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agorafdkaac.xcframework; sourceTree = ""; }; - 8BF7442F25A580A7007A0793 /* AgoraCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraCore.xcframework; sourceTree = ""; }; - 8BF7443025A580A7007A0793 /* Agoraffmpeg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agoraffmpeg.xcframework; sourceTree = ""; }; - 8BF7443125A580A7007A0793 /* AgoraRtcKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraRtcKit.xcframework; sourceTree = ""; }; - 8BF7443225A580A7007A0793 /* AgoraSoundTouch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraSoundTouch.xcframework; sourceTree = ""; }; A75811AA2407950B007EDAD3 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; A75811AC24079513007EDAD3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; A7733D242407952F00483870 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; @@ -77,11 +65,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8BF7443525A580A7007A0793 /* Agoraffmpeg.xcframework in Frameworks */, - 8BF7443325A580A7007A0793 /* Agorafdkaac.xcframework in Frameworks */, - 8BF7443825A580AE007A0793 /* AgoraRtcKit.xcframework in Frameworks */, - 8BF7443725A580A7007A0793 /* AgoraSoundTouch.xcframework in Frameworks */, - 8BF7443425A580A7007A0793 /* AgoraCore.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -109,11 +92,6 @@ 38101C5B2386AA55005484F9 /* Agora-iOS-Tutorial-SwiftUI-1to1 */ = { isa = PBXGroup; children = ( - 8BF7442F25A580A7007A0793 /* AgoraCore.xcframework */, - 8BF7442E25A580A7007A0793 /* Agorafdkaac.xcframework */, - 8BF7443025A580A7007A0793 /* Agoraffmpeg.xcframework */, - 8BF7443125A580A7007A0793 /* AgoraRtcKit.xcframework */, - 8BF7443225A580A7007A0793 /* AgoraSoundTouch.xcframework */, 38101C712386AADD005484F9 /* ContentView.swift */, 38101C8D2386C8D2005484F9 /* VideoEngine.swift */, 38101C732386AADD005484F9 /* VideoSessionView.swift */, @@ -173,7 +151,7 @@ 38101C552386AA55005484F9 /* Sources */, 38101C562386AA55005484F9 /* Frameworks */, 38101C572386AA55005484F9 /* Resources */, - A7911491246D120300E77A35 /* Embed Frameworks */, + 8BC30CBB25EBE865009E2E1B /* Embed Frameworks */, ); buildRules = ( ); @@ -378,10 +356,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; DEVELOPMENT_ASSET_PATHS = "\"Agora-iOS-Tutorial-SwiftUI-1to1/Preview Content\""; - DEVELOPMENT_TEAM = GM72UGLGZW; + DEVELOPMENT_TEAM = 5459N9W32M; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -393,9 +371,9 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial-SwiftUI-1to1"; + PRODUCT_BUNDLE_IDENTIFIER = "com.medialab.Agora-iOS-Tutorial-SwiftUI-1to1"; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = App; + PROVISIONING_PROFILE_SPECIFIER = medialab_develop; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -405,10 +383,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; DEVELOPMENT_ASSET_PATHS = "\"Agora-iOS-Tutorial-SwiftUI-1to1/Preview Content\""; - DEVELOPMENT_TEAM = GM72UGLGZW; + DEVELOPMENT_TEAM = 5459N9W32M; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -420,9 +398,9 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial-SwiftUI-1to1"; + PRODUCT_BUNDLE_IDENTIFIER = "com.medialab.Agora-iOS-Tutorial-SwiftUI-1to1"; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = App; + PROVISIONING_PROFILE_SPECIFIER = medialab_develop; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1/VideoEngine.swift b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1/VideoEngine.swift index cad75955..bcd7aa66 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1/VideoEngine.swift +++ b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1/VideoEngine.swift @@ -25,14 +25,6 @@ extension VideoEngine: AgoraRtcEngineDelegate { } func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { - contentView?.isRemoteInSession = true - } - - func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) { - contentView?.isRemoteInSession = false - } - - func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid: UInt, size: CGSize, elapsed: Int) { // Only one remote video view is available for this // tutorial. Here we check if there exists a surface // view tagged as this uid. @@ -43,8 +35,13 @@ extension VideoEngine: AgoraRtcEngineDelegate { agoraEngine.setupRemoteVideo(videoCanvas) contentView?.isRemoteVideoMuted = false + contentView?.isRemoteInSession = true } + func rtcEngine(_ engine: AgoraRtcEngineKit, didOfflineOfUid uid: UInt, reason: AgoraUserOfflineReason) { + contentView?.isRemoteInSession = false + } + func rtcEngine(_ engine: AgoraRtcEngineKit, didVideoMuted muted:Bool, byUid:UInt) { contentView?.isRemoteVideoMuted = muted } diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/Agora-Mac-Tutorial-Objective-C/VideoChatViewController.m b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/Agora-Mac-Tutorial-Objective-C/VideoChatViewController.m index 9ce9e8ae..2cb19d52 100755 --- a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/Agora-Mac-Tutorial-Objective-C/VideoChatViewController.m +++ b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/Agora-Mac-Tutorial-Objective-C/VideoChatViewController.m @@ -84,7 +84,7 @@ - (void)joinChannel { // The UID database is maintained by your app to track which users joined which channels. If not assigned (or set to 0), the SDK will allocate one and returns it in joinSuccessBlock callback. The App needs to record and maintain the returned value as the SDK does not maintain it. } -- (void)rtcEngine:(AgoraRtcEngineKit *)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size: (CGSize)size elapsed:(NSInteger)elapsed { +- (void)rtcEngine:(AgoraRtcEngineKit *)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed { if (self.remoteVideo.hidden) self.remoteVideo.hidden = false; AgoraRtcVideoCanvas *videoCanvas = [[AgoraRtcVideoCanvas alloc] init]; diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift/VideoChatViewController.swift b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift/VideoChatViewController.swift index 9ecd28da..c991009c 100755 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift/VideoChatViewController.swift +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift/VideoChatViewController.swift @@ -205,13 +205,7 @@ class VideoChatViewController: NSViewController { extension VideoChatViewController: AgoraRtcEngineDelegate { - /// Callback to handle the event when the first frame of a remote video stream is decoded on the device. - /// - Parameters: - /// - engine: RTC engine instance - /// - uid: user id - /// - size: the height and width of the video frame - /// - elapsed: Time elapsed (ms) from the local user calling JoinChannel method until the SDK triggers this callback. - func rtcEngine(_ engine: AgoraRtcEngineKit, firstRemoteVideoDecodedOfUid uid:UInt, size:CGSize, elapsed:Int) { + func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int) { if (remoteVideo.isHidden) { remoteVideo.isHidden = false } From 9d03eee8b5c9edcda48c15cf784340e6f6a0dbbf Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Tue, 30 Mar 2021 15:12:22 +0800 Subject: [PATCH 02/12] use search path for sdk embedded demo --- .../project.pbxproj | 51 +++--------------- .../.xcodesamplecode.plist | 2 - .../project.pbxproj | 52 +------------------ 3 files changed, 10 insertions(+), 95 deletions(-) delete mode 100644 One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/.xcodesamplecode.plist diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index b6491a91..fd12fa61 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -14,12 +14,6 @@ 1ABDEE491D383BE4007DE451 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE481D383BE4007DE451 /* Assets.xcassets */; }; 1ABDEE4C1D383BE4007DE451 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE4A1D383BE4007DE451 /* LaunchScreen.storyboard */; }; 38EF7E962368277700A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E952368277700A6A483 /* README.md */; }; - 8BF7442525A58037007A0793 /* AgoraSoundTouch.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442025A58037007A0793 /* AgoraSoundTouch.xcframework */; }; - 8BF7442625A58037007A0793 /* Agoraffmpeg.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442125A58037007A0793 /* Agoraffmpeg.xcframework */; }; - 8BF7442725A58037007A0793 /* AgoraCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442225A58037007A0793 /* AgoraCore.xcframework */; }; - 8BF7442825A58037007A0793 /* Agorafdkaac.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7442325A58037007A0793 /* Agorafdkaac.xcframework */; }; - 8BF7442A25A58040007A0793 /* AgoraRtcKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7441F25A58037007A0793 /* AgoraRtcKit.xcframework */; }; - 8BF7442B25A58040007A0793 /* AgoraRtcKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF7441F25A58037007A0793 /* AgoraRtcKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A72BB7DE22F2B67E008F563D /* Log.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A72BB7DC22F2B67E008F563D /* Log.storyboard */; }; A72BB7DF22F2B67E008F563D /* LogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72BB7DD22F2B67E008F563D /* LogViewController.swift */; }; A77E577724ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E577624ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift */; }; @@ -43,7 +37,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 8BF7442B25A58040007A0793 /* AgoraRtcKit.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -60,11 +53,6 @@ 1ABDEE4B1D383BE4007DE451 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 1ABDEE4D1D383BE4007DE451 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38EF7E952368277700A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 8BF7441F25A58037007A0793 /* AgoraRtcKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraRtcKit.xcframework; sourceTree = ""; }; - 8BF7442025A58037007A0793 /* AgoraSoundTouch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraSoundTouch.xcframework; sourceTree = ""; }; - 8BF7442125A58037007A0793 /* Agoraffmpeg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agoraffmpeg.xcframework; sourceTree = ""; }; - 8BF7442225A58037007A0793 /* AgoraCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraCore.xcframework; sourceTree = ""; }; - 8BF7442325A58037007A0793 /* Agorafdkaac.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agorafdkaac.xcframework; sourceTree = ""; }; A72BB7DC22F2B67E008F563D /* Log.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Log.storyboard; sourceTree = ""; }; A72BB7DD22F2B67E008F563D /* LogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogViewController.swift; sourceTree = ""; }; A77E577424ADDBE300DD7670 /* Agora-iOS-Tutorial-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-iOS-Tutorial-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -78,11 +66,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8BF7442625A58037007A0793 /* Agoraffmpeg.xcframework in Frameworks */, - 8BF7442525A58037007A0793 /* AgoraSoundTouch.xcframework in Frameworks */, - 8BF7442A25A58040007A0793 /* AgoraRtcKit.xcframework in Frameworks */, - 8BF7442825A58037007A0793 /* Agorafdkaac.xcframework in Frameworks */, - 8BF7442725A58037007A0793 /* AgoraCore.xcframework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -119,11 +102,6 @@ 1ABDEE401D383BE4007DE451 /* Agora-iOS-Tutorial */ = { isa = PBXGroup; children = ( - 8BF7442225A58037007A0793 /* AgoraCore.xcframework */, - 8BF7442325A58037007A0793 /* Agorafdkaac.xcframework */, - 8BF7442125A58037007A0793 /* Agoraffmpeg.xcframework */, - 8BF7441F25A58037007A0793 /* AgoraRtcKit.xcframework */, - 8BF7442025A58037007A0793 /* AgoraSoundTouch.xcframework */, 1ABDEE431D383BE4007DE451 /* VideoChatViewController.swift */, A72BB7DD22F2B67E008F563D /* LogViewController.swift */, 1ABDEE411D383BE4007DE451 /* AppDelegate.swift */, @@ -424,8 +402,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -446,10 +423,7 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -458,6 +432,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = App; + SWIFT_INCLUDE_PATHS = ../../libs; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -479,10 +454,7 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -491,6 +463,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = App; + SWIFT_INCLUDE_PATHS = ../../libs; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -518,11 +491,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; @@ -557,11 +526,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/.xcodesamplecode.plist b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/.xcodesamplecode.plist deleted file mode 100644 index fae3b959..00000000 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/.xcodesamplecode.plist +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj index f522a766..dd14d5a3 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj @@ -7,13 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 03CE90AD25435D9F009945C0 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90A925435D9F009945C0 /* AgoraRtcKit.framework */; }; - 03CE90AF25435DA2009945C0 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90A725435D9F009945C0 /* Agorafdkaac.framework */; }; - 03CE90B025435DA2009945C0 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90A725435D9F009945C0 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03CE90B125435DA3009945C0 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90AA25435D9F009945C0 /* Agoraffmpeg.framework */; }; - 03CE90B225435DA3009945C0 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90AA25435D9F009945C0 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 03CE90B325435DA4009945C0 /* AgoraSoundTouch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90A825435D9F009945C0 /* AgoraSoundTouch.framework */; }; - 03CE90B425435DA4009945C0 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03CE90A825435D9F009945C0 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 1A0466241D5E75A2004987C6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0466231D5E75A2004987C6 /* AppDelegate.swift */; }; 1A0466261D5E75A2004987C6 /* VideoChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */; }; 1A0466281D5E75A2004987C6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A0466271D5E75A2004987C6 /* Assets.xcassets */; }; @@ -21,14 +14,6 @@ 1A04664C1D5E7892004987C6 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; 1A04664F1D5EA139004987C6 /* DeviceSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */; }; 38EF7E9A236827E500A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E99236827E500A6A483 /* README.md */; }; - 8B1BE76F25AFEDD300AD49DB /* AgoraCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64B725ADF37600FE3779 /* AgoraCore.framework */; }; - 8B1BE77025AFEDD300AD49DB /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64B725ADF37600FE3779 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B1BE77125AFEDD400AD49DB /* av1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64BA25ADF37700FE3779 /* av1.framework */; }; - 8B1BE77225AFEDD400AD49DB /* av1.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64BA25ADF37700FE3779 /* av1.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B5C64BC25ADF37700FE3779 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64B625ADF37600FE3779 /* Agorafdkaac.framework */; }; - 8B5C64BE25ADF37700FE3779 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64B825ADF37600FE3779 /* Agoraffmpeg.framework */; }; - 8B5C64BF25ADF37700FE3779 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64B925ADF37700FE3779 /* AgoraRtcKit.framework */; }; - 8B5C64C125ADF37700FE3779 /* AgoraSoundTouch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C64BB25ADF37700FE3779 /* AgoraSoundTouch.framework */; }; A77E578824ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */; }; A77E578F24AE00E200DD7670 /* VideoChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */; }; A77E579024AE00E500DD7670 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; @@ -54,11 +39,6 @@ dstSubfolderSpec = 10; files = ( A7AD0F0124AEFA00008FFD5B /* AgoraRtcKit.framework in Embed Frameworks */, - 03CE90B225435DA3009945C0 /* Agoraffmpeg.framework in Embed Frameworks */, - 03CE90B025435DA2009945C0 /* Agorafdkaac.framework in Embed Frameworks */, - 8B1BE77225AFEDD400AD49DB /* av1.framework in Embed Frameworks */, - 03CE90B425435DA4009945C0 /* AgoraSoundTouch.framework in Embed Frameworks */, - 8B1BE77025AFEDD300AD49DB /* AgoraCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -66,10 +46,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CE90A725435D9F009945C0 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agorafdkaac.framework; sourceTree = ""; }; - 03CE90A825435D9F009945C0 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraSoundTouch.framework; sourceTree = ""; }; - 03CE90A925435D9F009945C0 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraRtcKit.framework; sourceTree = ""; }; - 03CE90AA25435D9F009945C0 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agoraffmpeg.framework; sourceTree = ""; }; 1A0466201D5E75A2004987C6 /* Agora-Mac-Tutorial-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Agora-Mac-Tutorial-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1A0466231D5E75A2004987C6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoChatViewController.swift; sourceTree = ""; }; @@ -79,12 +55,6 @@ 1A04664B1D5E7892004987C6 /* AppID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppID.swift; sourceTree = ""; }; 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceSelectionViewController.swift; sourceTree = ""; }; 38EF7E99236827E500A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 8B5C64B625ADF37600FE3779 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agorafdkaac.framework; sourceTree = ""; }; - 8B5C64B725ADF37600FE3779 /* AgoraCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraCore.framework; sourceTree = ""; }; - 8B5C64B825ADF37600FE3779 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agoraffmpeg.framework; sourceTree = ""; }; - 8B5C64B925ADF37700FE3779 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraRtcKit.framework; sourceTree = ""; }; - 8B5C64BA25ADF37700FE3779 /* av1.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = av1.framework; sourceTree = ""; }; - 8B5C64BB25ADF37700FE3779 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraSoundTouch.framework; sourceTree = ""; }; A77E578524ADFE5900DD7670 /* Agora-Mac-Tutorial-Swift-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-Mac-Tutorial-Swift-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Agora_Mac_Tutorial_Swift_Tests.swift; sourceTree = ""; }; A77E578924ADFE5900DD7670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -96,17 +66,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8B1BE76F25AFEDD300AD49DB /* AgoraCore.framework in Frameworks */, - 8B5C64BF25ADF37700FE3779 /* AgoraRtcKit.framework in Frameworks */, - 8B1BE77125AFEDD400AD49DB /* av1.framework in Frameworks */, - 8B5C64BE25ADF37700FE3779 /* Agoraffmpeg.framework in Frameworks */, - 8B5C64C125ADF37700FE3779 /* AgoraSoundTouch.framework in Frameworks */, - 03CE90AD25435D9F009945C0 /* AgoraRtcKit.framework in Frameworks */, - 03CE90B325435DA4009945C0 /* AgoraSoundTouch.framework in Frameworks */, A7AD0F0024AEFA00008FFD5B /* AgoraRtcKit.framework in Frameworks */, - 8B5C64BC25ADF37700FE3779 /* Agorafdkaac.framework in Frameworks */, - 03CE90B125435DA3009945C0 /* Agoraffmpeg.framework in Frameworks */, - 03CE90AF25435DA2009945C0 /* Agorafdkaac.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -143,16 +103,6 @@ 1A0466221D5E75A2004987C6 /* Agora-Mac-Tutorial-Swift */ = { isa = PBXGroup; children = ( - 8B5C64B725ADF37600FE3779 /* AgoraCore.framework */, - 03CE90A725435D9F009945C0 /* Agorafdkaac.framework */, - 03CE90AA25435D9F009945C0 /* Agoraffmpeg.framework */, - 03CE90A925435D9F009945C0 /* AgoraRtcKit.framework */, - 03CE90A825435D9F009945C0 /* AgoraSoundTouch.framework */, - 8B5C64B625ADF37600FE3779 /* Agorafdkaac.framework */, - 8B5C64B825ADF37600FE3779 /* Agoraffmpeg.framework */, - 8B5C64B925ADF37700FE3779 /* AgoraRtcKit.framework */, - 8B5C64BB25ADF37700FE3779 /* AgoraSoundTouch.framework */, - 8B5C64BA25ADF37700FE3779 /* av1.framework */, 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */, 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */, 1A04664B1D5E7892004987C6 /* AppID.swift */, @@ -462,6 +412,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-Mac-Tutorial-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_INCLUDE_PATHS = ../../libs; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -491,6 +442,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-Mac-Tutorial-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_INCLUDE_PATHS = ../../libs; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; From 2e4c16cacb794718d5182ccab89f4e27bd5731fe Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Wed, 31 Mar 2021 15:24:56 +0800 Subject: [PATCH 03/12] add framework with embedded setting --- .../project.pbxproj | 49 ++++++++++++++++--- .../project.pbxproj | 30 +++++++++--- 2 files changed, 65 insertions(+), 14 deletions(-) diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index fd12fa61..0b2984b0 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ @@ -14,6 +14,11 @@ 1ABDEE491D383BE4007DE451 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE481D383BE4007DE451 /* Assets.xcassets */; }; 1ABDEE4C1D383BE4007DE451 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE4A1D383BE4007DE451 /* LaunchScreen.storyboard */; }; 38EF7E962368277700A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E952368277700A6A483 /* README.md */; }; + 8B6FA07926145AC900A4E4C3 /* AgoraCore.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA07B26145ACA00A4E4C3 /* Agorafdkaac.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA07E26145ACB00A4E4C3 /* Agoraffmpeg.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA08126145ACC00A4E4C3 /* AgoraRtcKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA08426145ACD00A4E4C3 /* AgoraSoundTouch.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A72BB7DE22F2B67E008F563D /* Log.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A72BB7DC22F2B67E008F563D /* Log.storyboard */; }; A72BB7DF22F2B67E008F563D /* LogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72BB7DD22F2B67E008F563D /* LogViewController.swift */; }; A77E577724ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E577624ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift */; }; @@ -37,6 +42,11 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 8B6FA07E26145ACB00A4E4C3 /* Agoraffmpeg.xcframework in Embed Frameworks */, + 8B6FA08126145ACC00A4E4C3 /* AgoraRtcKit.xcframework in Embed Frameworks */, + 8B6FA07B26145ACA00A4E4C3 /* Agorafdkaac.xcframework in Embed Frameworks */, + 8B6FA08426145ACD00A4E4C3 /* AgoraSoundTouch.xcframework in Embed Frameworks */, + 8B6FA07926145AC900A4E4C3 /* AgoraCore.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -53,12 +63,16 @@ 1ABDEE4B1D383BE4007DE451 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 1ABDEE4D1D383BE4007DE451 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38EF7E952368277700A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agorafdkaac.xcframework; sourceTree = ""; }; + 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agoraffmpeg.xcframework; sourceTree = ""; }; + 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraCore.xcframework; sourceTree = ""; }; + 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraSoundTouch.xcframework; sourceTree = ""; }; + 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraRtcKit.xcframework; sourceTree = ""; }; A72BB7DC22F2B67E008F563D /* Log.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Log.storyboard; sourceTree = ""; }; A72BB7DD22F2B67E008F563D /* LogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogViewController.swift; sourceTree = ""; }; A77E577424ADDBE300DD7670 /* Agora-iOS-Tutorial-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-iOS-Tutorial-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; A77E577624ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Agora_iOS_Tutorial_Tests.swift; sourceTree = ""; }; A77E577824ADDBE300DD7670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A7AD0EFC24AEF9B7008FFD5B /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcKit.framework; path = "Agora-iOS-Tutorial/AgoraRtcKit.framework"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -102,6 +116,11 @@ 1ABDEE401D383BE4007DE451 /* Agora-iOS-Tutorial */ = { isa = PBXGroup; children = ( + 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */, + 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */, + 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */, + 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */, + 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */, 1ABDEE431D383BE4007DE451 /* VideoChatViewController.swift */, A72BB7DD22F2B67E008F563D /* LogViewController.swift */, 1ABDEE411D383BE4007DE451 /* AppDelegate.swift */, @@ -126,7 +145,6 @@ A7581191240790EA007EDAD3 /* Frameworks */ = { isa = PBXGroup; children = ( - A7AD0EFC24AEF9B7008FFD5B /* AgoraRtcKit.framework */, ); name = Frameworks; sourceTree = ""; @@ -402,7 +420,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -423,7 +442,10 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -454,7 +476,10 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -491,7 +516,11 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; @@ -526,7 +555,11 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj index dd14d5a3..800e10f8 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj @@ -14,11 +14,15 @@ 1A04664C1D5E7892004987C6 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; 1A04664F1D5EA139004987C6 /* DeviceSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */; }; 38EF7E9A236827E500A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E99236827E500A6A483 /* README.md */; }; + 8B6FA09426145B0C00A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA09626145B0E00A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA09826145B0F00A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA09A26145B1000A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA09C26145B1100A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA09E26145B1300A4E4C3 /* av1.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08826145B0A00A4E4C3 /* av1.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A77E578824ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */; }; A77E578F24AE00E200DD7670 /* VideoChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */; }; A77E579024AE00E500DD7670 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; - A7AD0F0024AEFA00008FFD5B /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7AD0EFF24AEFA00008FFD5B /* AgoraRtcKit.framework */; }; - A7AD0F0124AEFA00008FFD5B /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = A7AD0EFF24AEFA00008FFD5B /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -38,7 +42,12 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - A7AD0F0124AEFA00008FFD5B /* AgoraRtcKit.framework in Embed Frameworks */, + 8B6FA09A26145B1000A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, + 8B6FA09C26145B1100A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */, + 8B6FA09426145B0C00A4E4C3 /* AgoraCore.framework in Embed Frameworks */, + 8B6FA09E26145B1300A4E4C3 /* av1.framework in Embed Frameworks */, + 8B6FA09826145B0F00A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, + 8B6FA09626145B0E00A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -55,10 +64,15 @@ 1A04664B1D5E7892004987C6 /* AppID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppID.swift; sourceTree = ""; }; 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceSelectionViewController.swift; sourceTree = ""; }; 38EF7E99236827E500A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraRtcKit.framework; sourceTree = ""; }; + 8B6FA08826145B0A00A4E4C3 /* av1.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = av1.framework; sourceTree = ""; }; + 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraCore.framework; sourceTree = ""; }; + 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agoraffmpeg.framework; sourceTree = ""; }; + 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraSoundTouch.framework; sourceTree = ""; }; + 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agorafdkaac.framework; sourceTree = ""; }; A77E578524ADFE5900DD7670 /* Agora-Mac-Tutorial-Swift-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-Mac-Tutorial-Swift-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Agora_Mac_Tutorial_Swift_Tests.swift; sourceTree = ""; }; A77E578924ADFE5900DD7670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A7AD0EFF24AEFA00008FFD5B /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcKit.framework; path = "Agora-Mac-Tutorial-Swift/AgoraRtcKit.framework"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -66,7 +80,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A7AD0F0024AEFA00008FFD5B /* AgoraRtcKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,6 +116,12 @@ 1A0466221D5E75A2004987C6 /* Agora-Mac-Tutorial-Swift */ = { isa = PBXGroup; children = ( + 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */, + 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */, + 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */, + 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */, + 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */, + 8B6FA08826145B0A00A4E4C3 /* av1.framework */, 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */, 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */, 1A04664B1D5E7892004987C6 /* AppID.swift */, @@ -115,7 +134,6 @@ 1A0466491D5E7718004987C6 /* Frameworks */ = { isa = PBXGroup; children = ( - A7AD0EFF24AEFA00008FFD5B /* AgoraRtcKit.framework */, ); name = Frameworks; sourceTree = ""; From 7f4490d885ae8c5f79d928f7f3c378ae8e7adb28 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Wed, 31 Mar 2021 17:10:12 +0800 Subject: [PATCH 04/12] fix framework include issue --- .../project.pbxproj | 123 ++++++++++-------- .../project.pbxproj | 82 ++++++++---- 2 files changed, 127 insertions(+), 78 deletions(-) diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index 0b2984b0..ce093e74 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -14,11 +14,24 @@ 1ABDEE491D383BE4007DE451 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE481D383BE4007DE451 /* Assets.xcassets */; }; 1ABDEE4C1D383BE4007DE451 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1ABDEE4A1D383BE4007DE451 /* LaunchScreen.storyboard */; }; 38EF7E962368277700A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E952368277700A6A483 /* README.md */; }; - 8B6FA07926145AC900A4E4C3 /* AgoraCore.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA07B26145ACA00A4E4C3 /* Agorafdkaac.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA07E26145ACB00A4E4C3 /* Agoraffmpeg.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA08126145ACC00A4E4C3 /* AgoraRtcKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA08426145ACD00A4E4C3 /* AgoraSoundTouch.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1342614730900A4E4C3 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */; }; + 8B6FA1352614730900A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1362614730900A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */; }; + 8B6FA1372614730900A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1382614730900A4E4C3 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */; }; + 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; }; + 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA13C2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */; }; + 8B6FA13D2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; }; + 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */; }; + 8B6FA1412614730900A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1422614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1322614730900A4E4C3 /* AgoraAIDenoiseExtension.framework */; }; + 8B6FA1432614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1322614730900A4E4C3 /* AgoraAIDenoiseExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1442614730900A4E4C3 /* AgoraSoundTouch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1332614730900A4E4C3 /* AgoraSoundTouch.framework */; }; + 8B6FA1452614730900A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1332614730900A4E4C3 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A72BB7DE22F2B67E008F563D /* Log.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A72BB7DC22F2B67E008F563D /* Log.storyboard */; }; A72BB7DF22F2B67E008F563D /* LogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72BB7DD22F2B67E008F563D /* LogViewController.swift */; }; A77E577724ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E577624ADDBE300DD7670 /* Agora_iOS_Tutorial_Tests.swift */; }; @@ -42,11 +55,15 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 8B6FA07E26145ACB00A4E4C3 /* Agoraffmpeg.xcframework in Embed Frameworks */, - 8B6FA08126145ACC00A4E4C3 /* AgoraRtcKit.xcframework in Embed Frameworks */, - 8B6FA07B26145ACA00A4E4C3 /* Agorafdkaac.xcframework in Embed Frameworks */, - 8B6FA08426145ACD00A4E4C3 /* AgoraSoundTouch.xcframework in Embed Frameworks */, - 8B6FA07926145AC900A4E4C3 /* AgoraCore.xcframework in Embed Frameworks */, + 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, + 8B6FA1412614730900A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, + 8B6FA1372614730900A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */, + 8B6FA13D2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Embed Frameworks */, + 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */, + 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */, + 8B6FA1352614730900A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, + 8B6FA1452614730900A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */, + 8B6FA1432614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -63,11 +80,15 @@ 1ABDEE4B1D383BE4007DE451 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 1ABDEE4D1D383BE4007DE451 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38EF7E952368277700A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agorafdkaac.xcframework; sourceTree = ""; }; - 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Agoraffmpeg.xcframework; sourceTree = ""; }; - 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraCore.xcframework; sourceTree = ""; }; - 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraSoundTouch.xcframework; sourceTree = ""; }; - 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = AgoraRtcKit.xcframework; sourceTree = ""; }; + 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Agoraffmpeg.framework; path = ../../libs/Agoraffmpeg.framework; sourceTree = ""; }; + 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraDav1dExtension.framework; path = ../../libs/AgoraDav1dExtension.framework; sourceTree = ""; }; + 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Agorafdkaac.framework; path = ../../libs/Agorafdkaac.framework; sourceTree = ""; }; + 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraCore.framework; path = ../../libs/AgoraCore.framework; sourceTree = ""; }; + 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraSuperResolutionExtension.framework; path = ../../libs/AgoraSuperResolutionExtension.framework; sourceTree = ""; }; + 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraJNDExtension.framework; path = ../../libs/AgoraJNDExtension.framework; sourceTree = ""; }; + 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcKit.framework; path = ../../libs/AgoraRtcKit.framework; sourceTree = ""; }; + 8B6FA1322614730900A4E4C3 /* AgoraAIDenoiseExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraAIDenoiseExtension.framework; path = ../../libs/AgoraAIDenoiseExtension.framework; sourceTree = ""; }; + 8B6FA1332614730900A4E4C3 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraSoundTouch.framework; path = ../../libs/AgoraSoundTouch.framework; sourceTree = ""; }; A72BB7DC22F2B67E008F563D /* Log.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Log.storyboard; sourceTree = ""; }; A72BB7DD22F2B67E008F563D /* LogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogViewController.swift; sourceTree = ""; }; A77E577424ADDBE300DD7670 /* Agora-iOS-Tutorial-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-iOS-Tutorial-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -80,6 +101,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8B6FA1382614730900A4E4C3 /* Agorafdkaac.framework in Frameworks */, + 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */, + 8B6FA1362614730900A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */, + 8B6FA13C2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Frameworks */, + 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */, + 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */, + 8B6FA1342614730900A4E4C3 /* Agoraffmpeg.framework in Frameworks */, + 8B6FA1442614730900A4E4C3 /* AgoraSoundTouch.framework in Frameworks */, + 8B6FA1422614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -116,11 +146,6 @@ 1ABDEE401D383BE4007DE451 /* Agora-iOS-Tutorial */ = { isa = PBXGroup; children = ( - 8B6FA06F26145AC500A4E4C3 /* AgoraCore.xcframework */, - 8B6FA06D26145AC500A4E4C3 /* Agorafdkaac.xcframework */, - 8B6FA06E26145AC500A4E4C3 /* Agoraffmpeg.xcframework */, - 8B6FA07126145AC500A4E4C3 /* AgoraRtcKit.xcframework */, - 8B6FA07026145AC500A4E4C3 /* AgoraSoundTouch.xcframework */, 1ABDEE431D383BE4007DE451 /* VideoChatViewController.swift */, A72BB7DD22F2B67E008F563D /* LogViewController.swift */, 1ABDEE411D383BE4007DE451 /* AppDelegate.swift */, @@ -145,6 +170,15 @@ A7581191240790EA007EDAD3 /* Frameworks */ = { isa = PBXGroup; children = ( + 8B6FA1322614730900A4E4C3 /* AgoraAIDenoiseExtension.framework */, + 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */, + 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */, + 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */, + 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */, + 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */, + 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */, + 8B6FA1332614730900A4E4C3 /* AgoraSoundTouch.framework */, + 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */, ); name = Frameworks; sourceTree = ""; @@ -209,7 +243,7 @@ TargetAttributes = { 1ABDEE3D1D383BE4007DE451 = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = GM72UGLGZW; + DevelopmentTeam = JDPG69R49Z; LastSwiftMigration = 1130; ProvisioningStyle = Manual; SystemCapabilities = { @@ -420,8 +454,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -431,9 +464,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; - DEVELOPMENT_TEAM = GM72UGLGZW; + CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + DEVELOPMENT_TEAM = JDPG69R49Z; ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -442,10 +475,7 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -453,8 +483,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = App; - SWIFT_INCLUDE_PATHS = ../../libs; + PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -465,9 +495,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; - DEVELOPMENT_TEAM = GM72UGLGZW; + CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + DEVELOPMENT_TEAM = JDPG69R49Z; ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -476,10 +506,7 @@ ); INFOPLIST_FILE = "Agora-iOS-Tutorial/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Agora\\ iOS\\ Tutorial", @@ -487,8 +514,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = App; - SWIFT_INCLUDE_PATHS = ../../libs; + PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -516,11 +543,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; @@ -555,11 +578,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = "Agora-iOS-Tutorial-Tests/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "CavanSu.Agora-iOS-Tutorial-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj index 800e10f8..cde3b756 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/Agora-Mac-Tutorial-Swift.xcodeproj/project.pbxproj @@ -14,12 +14,24 @@ 1A04664C1D5E7892004987C6 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; 1A04664F1D5EA139004987C6 /* DeviceSelectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */; }; 38EF7E9A236827E500A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E99236827E500A6A483 /* README.md */; }; - 8B6FA09426145B0C00A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA09626145B0E00A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA09826145B0F00A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA09A26145B1000A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA09C26145B1100A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA09E26145B1300A4E4C3 /* av1.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA08826145B0A00A4E4C3 /* av1.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1152614725400A4E4C3 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10C2614725400A4E4C3 /* Agorafdkaac.framework */; }; + 8B6FA1162614725500A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10C2614725400A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1172614725500A4E4C3 /* AgoraCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10D2614725400A4E4C3 /* AgoraCore.framework */; }; + 8B6FA1182614725500A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10D2614725400A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1192614725500A4E4C3 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10E2614725400A4E4C3 /* AgoraRtcKit.framework */; }; + 8B6FA11A2614725500A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10E2614725400A4E4C3 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA11B2614725500A4E4C3 /* AgoraSoundTouch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10F2614725400A4E4C3 /* AgoraSoundTouch.framework */; }; + 8B6FA11C2614725500A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA10F2614725400A4E4C3 /* AgoraSoundTouch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA11D2614725500A4E4C3 /* AgoraJNDExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1102614725400A4E4C3 /* AgoraJNDExtension.framework */; }; + 8B6FA11E2614725500A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1102614725400A4E4C3 /* AgoraJNDExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA11F2614725500A4E4C3 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1112614725400A4E4C3 /* Agoraffmpeg.framework */; }; + 8B6FA1202614725500A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1112614725400A4E4C3 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1212614725500A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1122614725400A4E4C3 /* AgoraDav1dExtension.framework */; }; + 8B6FA1222614725500A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1122614725400A4E4C3 /* AgoraDav1dExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1232614725500A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1132614725400A4E4C3 /* AgoraAIDenoiseExtension.framework */; }; + 8B6FA1242614725500A4E4C3 /* AgoraAIDenoiseExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1132614725400A4E4C3 /* AgoraAIDenoiseExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 8B6FA1252614725500A4E4C3 /* av1.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1142614725400A4E4C3 /* av1.framework */; }; + 8B6FA1262614725500A4E4C3 /* av1.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1142614725400A4E4C3 /* av1.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; A77E578824ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */; }; A77E578F24AE00E200DD7670 /* VideoChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */; }; A77E579024AE00E500DD7670 /* AppID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A04664B1D5E7892004987C6 /* AppID.swift */; }; @@ -42,12 +54,15 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 8B6FA09A26145B1000A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, - 8B6FA09C26145B1100A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */, - 8B6FA09426145B0C00A4E4C3 /* AgoraCore.framework in Embed Frameworks */, - 8B6FA09E26145B1300A4E4C3 /* av1.framework in Embed Frameworks */, - 8B6FA09826145B0F00A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, - 8B6FA09626145B0E00A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, + 8B6FA11E2614725500A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */, + 8B6FA11A2614725500A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, + 8B6FA1182614725500A4E4C3 /* AgoraCore.framework in Embed Frameworks */, + 8B6FA1162614725500A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, + 8B6FA1222614725500A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */, + 8B6FA1202614725500A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, + 8B6FA1262614725500A4E4C3 /* av1.framework in Embed Frameworks */, + 8B6FA11C2614725500A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */, + 8B6FA1242614725500A4E4C3 /* AgoraAIDenoiseExtension.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -64,12 +79,15 @@ 1A04664B1D5E7892004987C6 /* AppID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppID.swift; sourceTree = ""; }; 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceSelectionViewController.swift; sourceTree = ""; }; 38EF7E99236827E500A6A483 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraRtcKit.framework; sourceTree = ""; }; - 8B6FA08826145B0A00A4E4C3 /* av1.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = av1.framework; sourceTree = ""; }; - 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraCore.framework; sourceTree = ""; }; - 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agoraffmpeg.framework; sourceTree = ""; }; - 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AgoraSoundTouch.framework; sourceTree = ""; }; - 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Agorafdkaac.framework; sourceTree = ""; }; + 8B6FA10C2614725400A4E4C3 /* Agorafdkaac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Agorafdkaac.framework; path = ../../libs/Agorafdkaac.framework; sourceTree = ""; }; + 8B6FA10D2614725400A4E4C3 /* AgoraCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraCore.framework; path = ../../libs/AgoraCore.framework; sourceTree = ""; }; + 8B6FA10E2614725400A4E4C3 /* AgoraRtcKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraRtcKit.framework; path = ../../libs/AgoraRtcKit.framework; sourceTree = ""; }; + 8B6FA10F2614725400A4E4C3 /* AgoraSoundTouch.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraSoundTouch.framework; path = ../../libs/AgoraSoundTouch.framework; sourceTree = ""; }; + 8B6FA1102614725400A4E4C3 /* AgoraJNDExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraJNDExtension.framework; path = ../../libs/AgoraJNDExtension.framework; sourceTree = ""; }; + 8B6FA1112614725400A4E4C3 /* Agoraffmpeg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Agoraffmpeg.framework; path = ../../libs/Agoraffmpeg.framework; sourceTree = ""; }; + 8B6FA1122614725400A4E4C3 /* AgoraDav1dExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraDav1dExtension.framework; path = ../../libs/AgoraDav1dExtension.framework; sourceTree = ""; }; + 8B6FA1132614725400A4E4C3 /* AgoraAIDenoiseExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AgoraAIDenoiseExtension.framework; path = ../../libs/AgoraAIDenoiseExtension.framework; sourceTree = ""; }; + 8B6FA1142614725400A4E4C3 /* av1.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = av1.framework; path = ../../libs/av1.framework; sourceTree = ""; }; A77E578524ADFE5900DD7670 /* Agora-Mac-Tutorial-Swift-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Agora-Mac-Tutorial-Swift-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; A77E578724ADFE5900DD7670 /* Agora_Mac_Tutorial_Swift_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Agora_Mac_Tutorial_Swift_Tests.swift; sourceTree = ""; }; A77E578924ADFE5900DD7670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -80,6 +98,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8B6FA11D2614725500A4E4C3 /* AgoraJNDExtension.framework in Frameworks */, + 8B6FA1192614725500A4E4C3 /* AgoraRtcKit.framework in Frameworks */, + 8B6FA1172614725500A4E4C3 /* AgoraCore.framework in Frameworks */, + 8B6FA1152614725400A4E4C3 /* Agorafdkaac.framework in Frameworks */, + 8B6FA1212614725500A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */, + 8B6FA11F2614725500A4E4C3 /* Agoraffmpeg.framework in Frameworks */, + 8B6FA1252614725500A4E4C3 /* av1.framework in Frameworks */, + 8B6FA11B2614725500A4E4C3 /* AgoraSoundTouch.framework in Frameworks */, + 8B6FA1232614725500A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -116,12 +143,6 @@ 1A0466221D5E75A2004987C6 /* Agora-Mac-Tutorial-Swift */ = { isa = PBXGroup; children = ( - 8B6FA08926145B0A00A4E4C3 /* AgoraCore.framework */, - 8B6FA08C26145B0A00A4E4C3 /* Agorafdkaac.framework */, - 8B6FA08A26145B0A00A4E4C3 /* Agoraffmpeg.framework */, - 8B6FA08726145B0A00A4E4C3 /* AgoraRtcKit.framework */, - 8B6FA08B26145B0A00A4E4C3 /* AgoraSoundTouch.framework */, - 8B6FA08826145B0A00A4E4C3 /* av1.framework */, 1A0466251D5E75A2004987C6 /* VideoChatViewController.swift */, 1A04664E1D5EA139004987C6 /* DeviceSelectionViewController.swift */, 1A04664B1D5E7892004987C6 /* AppID.swift */, @@ -134,6 +155,15 @@ 1A0466491D5E7718004987C6 /* Frameworks */ = { isa = PBXGroup; children = ( + 8B6FA1132614725400A4E4C3 /* AgoraAIDenoiseExtension.framework */, + 8B6FA10D2614725400A4E4C3 /* AgoraCore.framework */, + 8B6FA1122614725400A4E4C3 /* AgoraDav1dExtension.framework */, + 8B6FA10C2614725400A4E4C3 /* Agorafdkaac.framework */, + 8B6FA1112614725400A4E4C3 /* Agoraffmpeg.framework */, + 8B6FA1102614725400A4E4C3 /* AgoraJNDExtension.framework */, + 8B6FA10E2614725400A4E4C3 /* AgoraRtcKit.framework */, + 8B6FA10F2614725400A4E4C3 /* AgoraSoundTouch.framework */, + 8B6FA1142614725400A4E4C3 /* av1.framework */, ); name = Frameworks; sourceTree = ""; @@ -430,7 +460,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-Mac-Tutorial-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_INCLUDE_PATHS = ../../libs; + SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -460,7 +490,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-Mac-Tutorial-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_INCLUDE_PATHS = ../../libs; + SWIFT_INCLUDE_PATHS = ""; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; From c8fbe95fb3a3701ecbc05741e9e161eed0931341 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Thu, 1 Apr 2021 15:40:58 +0800 Subject: [PATCH 05/12] fix ci check issue --- .../Agora-iOS-Tutorial.xcodeproj/project.pbxproj | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index ce093e74..493892fd 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -16,14 +16,10 @@ 38EF7E962368277700A6A483 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 38EF7E952368277700A6A483 /* README.md */; }; 8B6FA1342614730900A4E4C3 /* Agoraffmpeg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */; }; 8B6FA1352614730900A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12B2614730900A4E4C3 /* Agoraffmpeg.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA1362614730900A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */; }; - 8B6FA1372614730900A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12C2614730900A4E4C3 /* AgoraDav1dExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA1382614730900A4E4C3 /* Agorafdkaac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */; }; 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; }; 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA13C2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */; }; - 8B6FA13D2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12F2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; }; 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */; }; @@ -57,8 +53,6 @@ files = ( 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, 8B6FA1412614730900A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, - 8B6FA1372614730900A4E4C3 /* AgoraDav1dExtension.framework in Embed Frameworks */, - 8B6FA13D2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Embed Frameworks */, 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */, 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */, 8B6FA1352614730900A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, @@ -103,8 +97,6 @@ files = ( 8B6FA1382614730900A4E4C3 /* Agorafdkaac.framework in Frameworks */, 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */, - 8B6FA1362614730900A4E4C3 /* AgoraDav1dExtension.framework in Frameworks */, - 8B6FA13C2614730900A4E4C3 /* AgoraSuperResolutionExtension.framework in Frameworks */, 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */, 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */, 8B6FA1342614730900A4E4C3 /* Agoraffmpeg.framework in Frameworks */, @@ -488,6 +480,7 @@ SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; + VALIDATE_WORKSPACE = YES; }; name = Debug; }; @@ -519,6 +512,7 @@ SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; + VALIDATE_WORKSPACE = YES; }; name = Release; }; From 736705f718027c859656959b8d743e63ce0d0bfd Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Thu, 1 Apr 2021 20:09:22 +0800 Subject: [PATCH 06/12] adapt sdk 3.4.0 --- .../java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java index 36842b03..3bbbf382 100644 --- a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java +++ b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.java @@ -80,7 +80,7 @@ public void run() { } @Override - public void onUserJoined(int uid) { + public void onUserJoined(final int uid, int elapsed) { runOnUiThread(new Runnable() { @Override public void run() { From c2520b5af65b4502d031f1113f371f61c24a070f Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Wed, 7 Apr 2021 17:28:00 +0800 Subject: [PATCH 07/12] update token related information in readme --- .../OpenVideoCall-Android/README.zh.md | 4 + Group-Video/OpenVideoCall-Linux/README.zh.md | 174 +++++++++--------- Group-Video/OpenVideoCall-Web/README.zh.md | 4 + .../OpenVideoCall-Windows-MFC/README.zh.md | 4 + .../OpenVideoCall-Windows/README.zh.md | 4 + .../README.zh.md | 6 +- Group-Video/OpenVideoCall-iOS/README.zh.md | 4 + Group-Video/OpenVideoCall-macOS/README.zh.md | 4 + .../Agora-Android-Tutorial-1to1/README.md | 6 +- .../Agora-Android-Tutorial-1to1/README.zh.md | 4 + .../README.md | 6 +- .../README.zh.md | 4 + .../VideoChatViewActivity.kt | 16 +- .../README.md | 3 + .../README.zh.md | 3 + .../README.md | 7 + .../README.zh.md | 7 + .../Agora-Web-Tutorial-1to1-React/README.md | 7 + .../README.zh.md | 7 + .../Agora-Web-Tutorial-1to1-Vue/README.md | 7 + .../Agora-Web-Tutorial-1to1-Vue/README.zh.md | 7 + .../Agora-Web-Tutorial-1to1-Webpack/README.md | 3 + .../README.zh.md | 3 + .../Agora-Web-Tutorial-1to1/README.md | 3 + .../Agora-Web-Tutorial-1to1/README.zh.md | 3 + .../Agora-Windows-Tutorial-1to1/README.md | 4 + .../Agora-Windows-Tutorial-1to1/README.zh.md | 4 + .../README.md | 4 + .../README.zh.md | 6 +- .../Agora-iOS-Tutorial-Swift-1to1/README.md | 4 + .../README.zh.md | 4 + .../Agora-iOS-Tutorial-SwiftUI-1to1/README.md | 4 + .../README.zh.md | 4 + .../README.md | 4 + .../README.zh.md | 6 +- .../Agora-macOS-Tutorial-Swift-1to1/README.md | 4 + .../README.zh.md | 4 + 37 files changed, 252 insertions(+), 100 deletions(-) diff --git a/Group-Video/OpenVideoCall-Android/README.zh.md b/Group-Video/OpenVideoCall-Android/README.zh.md index cf0d4596..54a41040 100644 --- a/Group-Video/OpenVideoCall-Android/README.zh.md +++ b/Group-Video/OpenVideoCall-Android/README.zh.md @@ -40,6 +40,10 @@ <#YOUR TOKEN#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 集成方式有以下两种: diff --git a/Group-Video/OpenVideoCall-Linux/README.zh.md b/Group-Video/OpenVideoCall-Linux/README.zh.md index 5b958c10..4019782f 100644 --- a/Group-Video/OpenVideoCall-Linux/README.zh.md +++ b/Group-Video/OpenVideoCall-Linux/README.zh.md @@ -1,85 +1,89 @@ -# Open Video Call Linux - -*Read this in other languages: [English](README.md)* - -这个开源示例项目演示了如何快速集成Agora视频SDK,实现多人视频通话。 - -在这个示例项目中包含了以下功能: - -- 加入通话和离开通话; -- 静音和解除静音; -- 关闭摄像头和打开摄像头; -- 切换摄像头; -- 选择分辨率、码率和帧率; - -Agora视频SDK支持 iOS / Android / Windows / macOS/ Linux 等多个平台,你可以查看对应各平台的示例项目: - -- [OpenVideoCall-Android](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Android) -- [OpenVideoCall-Windows](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Windows) -- [OpenVideoCall-macOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-macOS) -- [OpenVideoCall-iOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-iOS) - -## 运行示例程序 -首先在 [Agora.io 注册](https://dashboard.agora.io/cn/signup/) 注册账号,并创建自己的测试项目,获取到 AppID。将 AppID 填写进 run.sh - -``` ---appId "your app ID" -``` - -然后在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹下的 - -- libagora_rtc_sdk.so - -两个文件复制到本项目的 “OpenVideoCall/libs” 文件夹下。 -在sample/OpenVideoCall下 输入命令 make, 便可编译生成openVideoCall demo。在run.sh中配置执行demo所需要的参数。 -openVideoCall 为命令行程序。使用方法如下: -command: -- open -  开启通话。 -- close -  关闭通话。 -- enable_video -  打开/关闭 全局视频功能,enable_video 0 为关闭视频功能,enable_video 1为打开视频功能 -- enable_audio -  打开/关闭 全局音频功能 -- enable_local_video -  打开/关闭 本地视频功能,enable_local_video 0 为关闭视频功能,enable_local_video 1为打开视频功能 -- mute_local_video -  打开/关闭 本地视频流发送,mute_local_video 0 为打开本地视频流发送,mute_local_video 1为关闭本地视频流发送 -- mute_local_audio -  打开/关闭 本地音频流发送,mute_local_video 0 为打开本地音频流发送,mute_local_video 1为关闭本地音频流发送 -- print_device_info -  打印设备信息 -- set_cur_camera -  设置当前工作的摄像头,set_cur_camera ‘device id ’ ,device id可以通过print_device_info 得到 -- print_callback - 打开/关闭 本地回调打印,print_callback 1 为打开本地音频流发送,print_call back 0 为关闭本地音频流发送^M^M - -- exit -  退出程序 - -## 系统运行环境 -* OS: - - Ubuntu 12.04 x64 或更高版本 - - CentOS 7 以上版本 - -* CPU: - - x86_64 -* Compiler: - - gcc 4.8 and above - - -## 联系我们 - -- 如果你遇到了困难,可以先参阅 [常见问题](https://docs.agora.io/cn/faq) -- 如果你想了解更多官方示例,可以参考 [官方SDK示例](https://github.com/AgoraIO) -- 如果你想了解声网SDK在复杂场景下的应用,可以参考 [官方场景案例](https://github.com/AgoraIO-usecase) -- 如果你想了解声网的一些社区开发者维护的项目,可以查看 [社区](https://github.com/AgoraIO-Community) -- 完整的 API 文档见 [文档中心](https://docs.agora.io/cn/) -- 若遇到问题需要开发者帮助,你可以到 [开发者社区](https://rtcdeveloper.com/) 提问 -- 如果需要售后技术支持, 你可以在 [Agora Dashboard](https://dashboard.agora.io) 提交工单 -- 如果发现了示例代码的 bug,欢迎提交 [issue](https://github.com/AgoraIO/Basic-Video-Call/issues) - -## 代码许可 - -The MIT License (MIT). +# Open Video Call Linux + +*Read this in other languages: [English](README.md)* + +这个开源示例项目演示了如何快速集成Agora视频SDK,实现多人视频通话。 + +在这个示例项目中包含了以下功能: + +- 加入通话和离开通话; +- 静音和解除静音; +- 关闭摄像头和打开摄像头; +- 切换摄像头; +- 选择分辨率、码率和帧率; + +Agora视频SDK支持 iOS / Android / Windows / macOS/ Linux 等多个平台,你可以查看对应各平台的示例项目: + +- [OpenVideoCall-Android](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Android) +- [OpenVideoCall-Windows](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Windows) +- [OpenVideoCall-macOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-macOS) +- [OpenVideoCall-iOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-iOS) + +## 运行示例程序 +首先在 [Agora.io 注册](https://dashboard.agora.io/cn/signup/) 注册账号,并创建自己的测试项目,获取到 AppID。将 AppID 填写进 run.sh + +``` +--appId "your app ID" +``` + +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + +然后在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹下的 + +- libagora_rtc_sdk.so + +两个文件复制到本项目的 “OpenVideoCall/libs” 文件夹下。 +在sample/OpenVideoCall下 输入命令 make, 便可编译生成openVideoCall demo。在run.sh中配置执行demo所需要的参数。 +openVideoCall 为命令行程序。使用方法如下: +command: +- open +  开启通话。 +- close +  关闭通话。 +- enable_video +  打开/关闭 全局视频功能,enable_video 0 为关闭视频功能,enable_video 1为打开视频功能 +- enable_audio +  打开/关闭 全局音频功能 +- enable_local_video +  打开/关闭 本地视频功能,enable_local_video 0 为关闭视频功能,enable_local_video 1为打开视频功能 +- mute_local_video +  打开/关闭 本地视频流发送,mute_local_video 0 为打开本地视频流发送,mute_local_video 1为关闭本地视频流发送 +- mute_local_audio +  打开/关闭 本地音频流发送,mute_local_video 0 为打开本地音频流发送,mute_local_video 1为关闭本地音频流发送 +- print_device_info +  打印设备信息 +- set_cur_camera +  设置当前工作的摄像头,set_cur_camera ‘device id ’ ,device id可以通过print_device_info 得到 +- print_callback + 打开/关闭 本地回调打印,print_callback 1 为打开本地音频流发送,print_call back 0 为关闭本地音频流发送^M^M + +- exit +  退出程序 + +## 系统运行环境 +* OS: + - Ubuntu 12.04 x64 或更高版本 + - CentOS 7 以上版本 + +* CPU: + - x86_64 +* Compiler: + - gcc 4.8 and above + + +## 联系我们 + +- 如果你遇到了困难,可以先参阅 [常见问题](https://docs.agora.io/cn/faq) +- 如果你想了解更多官方示例,可以参考 [官方SDK示例](https://github.com/AgoraIO) +- 如果你想了解声网SDK在复杂场景下的应用,可以参考 [官方场景案例](https://github.com/AgoraIO-usecase) +- 如果你想了解声网的一些社区开发者维护的项目,可以查看 [社区](https://github.com/AgoraIO-Community) +- 完整的 API 文档见 [文档中心](https://docs.agora.io/cn/) +- 若遇到问题需要开发者帮助,你可以到 [开发者社区](https://rtcdeveloper.com/) 提问 +- 如果需要售后技术支持, 你可以在 [Agora Dashboard](https://dashboard.agora.io) 提交工单 +- 如果发现了示例代码的 bug,欢迎提交 [issue](https://github.com/AgoraIO/Basic-Video-Call/issues) + +## 代码许可 + +The MIT License (MIT). diff --git a/Group-Video/OpenVideoCall-Web/README.zh.md b/Group-Video/OpenVideoCall-Web/README.zh.md index 4a594bc5..042ec488 100644 --- a/Group-Video/OpenVideoCall-Web/README.zh.md +++ b/Group-Video/OpenVideoCall-Web/README.zh.md @@ -31,6 +31,10 @@ export const Token = "<#YOUR TEMP TOKEN HERE#>"; ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在Terminal中,在您的项目根目录输入`install`命令以安装项目依赖 diff --git a/Group-Video/OpenVideoCall-Windows-MFC/README.zh.md b/Group-Video/OpenVideoCall-Windows-MFC/README.zh.md index c2690020..6db3d4d3 100644 --- a/Group-Video/OpenVideoCall-Windows-MFC/README.zh.md +++ b/Group-Video/OpenVideoCall-Windows-MFC/README.zh.md @@ -46,6 +46,10 @@ Agora 视频 SDK 支持 iOS / Android / Windows / macOS 等多个平台,你可 #define APP_ID _T("Your App ID") ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将 **libs\include** 中的文件,复制到 **OpenVideoCall-Windows-MFC** 下的 **sdk\include** 文件夹下(如无该文件夹需新建)。并将 **libs\x86** 下的 **dll** 和 **lib** 文件分别复制到 **sdk\dll** 和 **sdk\lib** 文件夹下。 diff --git a/Group-Video/OpenVideoCall-Windows/README.zh.md b/Group-Video/OpenVideoCall-Windows/README.zh.md index c32a0aa5..ae74bcbd 100644 --- a/Group-Video/OpenVideoCall-Windows/README.zh.md +++ b/Group-Video/OpenVideoCall-Windows/README.zh.md @@ -37,6 +37,10 @@ Agora 视频 SDK 支持 iOS / Android / Windows / macOS 等多个平台,你可 * #define APP_ID _T("Your App ID") +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + 然后在 [Agora.io SDK](https://www.agora.io/cn/download/) 下载 **视频通话 + 直播 SDK**,并解压SDK包,将 **libs** 文件夹复制到项目文件夹(旧文件夹可能会被覆盖)。最后使用 QT5.6 打开 OpenVideoCall.pro,编译整个解决方案即可运行 * 如果不在代码里填写appid,也可以在运行目录下放置一个AgoraConfigOpenVideoCall.ini文件,文件内容: diff --git a/Group-Video/OpenVideoCall-iOS-Objective-C/README.zh.md b/Group-Video/OpenVideoCall-iOS-Objective-C/README.zh.md index 65f4a28e..c6509e64 100644 --- a/Group-Video/OpenVideoCall-iOS-Objective-C/README.zh.md +++ b/Group-Video/OpenVideoCall-iOS-Objective-C/README.zh.md @@ -53,13 +53,17 @@ iOS 系统版本升级至 14.0 版本后,用户首次使用集成了声网 iOS } ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 OpenVideoCall 文件夹下。 - AgoraRtcKit.framework - AgoraRtcCryptoLoader.framework - + 2. 打开 Xcode 后,运行本项目。 ## 联系我们 diff --git a/Group-Video/OpenVideoCall-iOS/README.zh.md b/Group-Video/OpenVideoCall-iOS/README.zh.md index 8ac7e14b..0fd13dc1 100644 --- a/Group-Video/OpenVideoCall-iOS/README.zh.md +++ b/Group-Video/OpenVideoCall-iOS/README.zh.md @@ -49,6 +49,10 @@ static let AppId: String = <#Your App Id#> static var Token: String? = <#Temp Access Token#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 OpenVideoCall 文件夹下。 diff --git a/Group-Video/OpenVideoCall-macOS/README.zh.md b/Group-Video/OpenVideoCall-macOS/README.zh.md index 52bee7e3..5f43e1bb 100644 --- a/Group-Video/OpenVideoCall-macOS/README.zh.md +++ b/Group-Video/OpenVideoCall-macOS/README.zh.md @@ -41,6 +41,10 @@ static var Token: String? = <#Temp Access Token#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹下的下列文件拷贝到本项目的 OpenVideoCall 文件夹下。 diff --git a/One-to-One-Video/Agora-Android-Tutorial-1to1/README.md b/One-to-One-Video/Agora-Android-Tutorial-1to1/README.md index d488fbc0..5ea62866 100755 --- a/One-to-One-Video/Agora-Android-Tutorial-1to1/README.md +++ b/One-to-One-Video/Agora-Android-Tutorial-1to1/README.md @@ -38,6 +38,10 @@ To build and run the sample application, get an App ID: <#YOUR TOKEN#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK The SDK must be integrated into the sample project before it can opened and built. There are two methods for integrating the Agora Video SDK into the sample project. The first method uses JCenter to automatically integrate the SDK files. The second method requires you to manually copy the SDK files to the project. @@ -68,7 +72,7 @@ Copy from SDK|Copy to Project Folder **x86** folder|**/app/src/main/jniLibs** folder **armeabi-v7a** folder|**/app/src/main/jniLibs** folder - +​ ### Run the Application diff --git a/One-to-One-Video/Agora-Android-Tutorial-1to1/README.zh.md b/One-to-One-Video/Agora-Android-Tutorial-1to1/README.zh.md index a91ff7a7..ecdce7ef 100755 --- a/One-to-One-Video/Agora-Android-Tutorial-1to1/README.zh.md +++ b/One-to-One-Video/Agora-Android-Tutorial-1to1/README.zh.md @@ -38,6 +38,10 @@ <#YOUR TOKEN#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 集成方式有以下两种: diff --git a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.md b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.md index 0d5783ae..fbb900a0 100755 --- a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.md +++ b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.md @@ -41,6 +41,10 @@ To build and run the sample application, get an App ID: <#YOUR TOKEN#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK The SDK must be integrated into the sample project before it can opened and built. There are two methods for integrating the Agora Video SDK into the sample project. The first method uses JCenter to automatically integrate the SDK files. The second method requires you to manually copy the SDK files to the project. @@ -71,7 +75,7 @@ Copy from SDK|Copy to Project Folder **x86** folder|**/app/src/main/jniLibs** folder **armeabi-v7a** folder|**/app/src/main/jniLibs** folder - +​ ### Run the Application diff --git a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.zh.md b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.zh.md index 68b23d79..bbc7115b 100755 --- a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.zh.md +++ b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/README.zh.md @@ -39,6 +39,10 @@ <#YOUR TOKEN#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 集成方式有以下两种: diff --git a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.kt b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.kt index 858837e3..7df8178c 100644 --- a/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.kt +++ b/One-to-One-Video/Agora-Android-Tutorial-Kotlin-1to1/app/src/main/java/io/agora/tutorials1v1vcall/VideoChatViewActivity.kt @@ -25,22 +25,18 @@ class VideoChatViewActivity : AppCompatActivity() { private var mRtcEngine: RtcEngine? = null private val mRtcEventHandler = object : IRtcEngineEventHandler() { /** - * Occurs when the first remote video frame is received and decoded. + * Occurs when a remote user (Communication)/ host (Live Broadcast) joins the channel. * This callback is triggered in either of the following scenarios: * - * The remote user joins the channel and sends the video stream. - * The remote user stops sending the video stream and re-sends it after 15 seconds. Possible reasons include: - * The remote user leaves channel. - * The remote user drops offline. - * The remote user calls the muteLocalVideoStream method. - * The remote user calls the disableVideo method. + * A remote user/host joins the channel by calling the joinChannel method. + * A remote user switches the user role to the host by calling the setClientRole method after joining the channel. + * A remote user/host rejoins the channel after a network interruption. + * The host injects an online media stream into the channel by calling the addInjectStreamUrl method. * * @param uid User ID of the remote user sending the video streams. - * @param width Width (pixels) of the video stream. - * @param height Height (pixels) of the video stream. * @param elapsed Time elapsed (ms) from the local user calling the joinChannel method until this callback is triggered. */ - override fun onFirstRemoteVideoDecoded(uid: Int, width: Int, height: Int, elapsed: Int) { + override fun onUserJoined(uid: Int, elapsed: Int) { runOnUiThread { setupRemoteVideo(uid) } } diff --git a/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.md b/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.md index 4eb94ee6..cdc734bf 100644 --- a/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.md +++ b/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.md @@ -21,6 +21,9 @@ To build and run the sample application, get an App ID: 3. Save the **App ID** from the Dashboard for later use. 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. ### Install dependencies and integrate the Agora Video SDK diff --git a/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.zh.md b/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.zh.md index 4daec4a0..4b88d6d5 100644 --- a/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.zh.md +++ b/One-to-One-Video/Agora-Web-RTS-Tutorial-1to1-Webpack/README.zh.md @@ -26,6 +26,9 @@ This section shows you how to prepare, and run the sample application. 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 ### 集成 Agora 视频 SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.md index 0ba033d7..05ac2e5f 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.md @@ -13,10 +13,17 @@ This tutorial shows you how to quickly create an basic video communication using To build and run the sample application, get an App ID: 1. Create a developer account at [agora.io](https://dashboard.agora.io/signin/). Once you finish the signup process, you will be redirected to the Dashboard. + 2. Navigate in the Dashboard tree on the left to **Projects** > **Project List**. + 3. Save the **App ID** from the Dashboard for later use. + 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. + > To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. + > + > Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Install dependencies and integrate the Agora Video SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.zh.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.zh.md index 12687bee..f22d6be0 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.zh.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-React-NG/README.zh.md @@ -17,10 +17,17 @@ 在编译和启动实例程序前,您需要首先获取一个可用的App ID: 1. 在[agora.io](https://dashboard.agora.io/signin/)创建一个开发者账号 + 2. 前往后台页面,点击左部导航栏的 **项目 > 项目列表** 菜单 + 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 + 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 + > 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 + > + > 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.md index 987a076a..08672229 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.md @@ -17,10 +17,17 @@ This section shows you how to prepare, and run the sample application. To build and run the sample application, get an App ID: 1. Create a developer account at [agora.io](https://dashboard.agora.io/signin/). Once you finish the signup process, you will be redirected to the Dashboard. + 2. Navigate in the Dashboard tree on the left to **Projects** > **Project List**. + 3. Save the **App ID** from the Dashboard for later use. + 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. + > To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. + > + > Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Install dependencies and integrate the Agora Video SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.zh.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.zh.md index ddc97b78..2c82512a 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.zh.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-React/README.zh.md @@ -22,10 +22,17 @@ This section shows you how to prepare, and run the sample application. 在编译和启动实例程序前,您需要首先获取一个可用的App ID: 1. 在[agora.io](https://dashboard.agora.io/signin/)创建一个开发者账号 + 2. 前往后台页面,点击左部导航栏的 **项目 > 项目列表** 菜单 + 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 + 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 + > 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 + > + > 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.md index abe07b04..c1b21e03 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.md @@ -12,10 +12,17 @@ Video supports one to one, one to many calls ## To build and run the sample application, get an App ID: 1. Create a developer account at [agora.io](https://dashboard.agora.io/signin/). Once you finish the signup process, you will be redirected to the Dashboard. + 2. Navigate in the Dashboard tree on the left to **Projects** > **Project List**. + 3. Save the **App ID** from the Dashboard for later use. + 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. + > To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. + > + > Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ## Start project basic-video-call diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.zh.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.zh.md index 5fc38b7b..c59d4108 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.zh.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-Vue/README.zh.md @@ -12,10 +12,17 @@ Web Tutorial For Vue - 1to1 ## 如何获取appID ? 1. 在[agora.io](https://dashboard.agora.io/signin/)创建一个开发者账号 + 2. 前往后台页面,点击左部导航栏的 **项目 > 项目列表** 菜单 + 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 + 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 + > 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 + > + > 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ## 开始运行项目 basic-video-call diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.md index 86cb3cd6..ea8d5ebf 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.md @@ -21,6 +21,9 @@ To build and run the sample application, get an App ID: 3. Save the **App ID** from the Dashboard for later use. 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. ### Install dependencies and integrate the Agora Video SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.zh.md b/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.zh.md index 030a6e24..5ba799c4 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.zh.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1-Webpack/README.zh.md @@ -26,6 +26,9 @@ This section shows you how to prepare, and run the sample application. 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 ### 集成 Agora 视频 SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1/README.md b/One-to-One-Video/Agora-Web-Tutorial-1to1/README.md index d0b9a711..67b43305 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1/README.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1/README.md @@ -26,6 +26,9 @@ To build and run the sample application, get an App ID: 3. Save the **App ID** from the Dashboard for later use. 4. Generate a temp **Access Token** (valid for 24 hours) from dashboard page with given channel name, save for later use. +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. ### Integrate Agora Video SDK diff --git a/One-to-One-Video/Agora-Web-Tutorial-1to1/README.zh.md b/One-to-One-Video/Agora-Web-Tutorial-1to1/README.zh.md index 415a6291..9849c0cd 100644 --- a/One-to-One-Video/Agora-Web-Tutorial-1to1/README.zh.md +++ b/One-to-One-Video/Agora-Web-Tutorial-1to1/README.zh.md @@ -26,6 +26,9 @@ 3. 复制后台的 **App ID** 并备注,稍后启动应用时会用到它 4. 在项目页面生成临时 **Access Token** (24小时内有效)并备注,注意生成的Token只能适用于对应的频道名。 +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 ### 集成 Agora 视频 SDK diff --git a/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.md b/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.md index 2283986b..e4d08913 100755 --- a/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.md +++ b/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.md @@ -31,6 +31,10 @@ To build and run the sample application, get an App ID: #define APP_ID _T("Your App ID") ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the **Agora Video SDK** from [Agora.io SDK](https://www.agora.io/en/blog/download/). Unzip the downloaded SDK package and copy the files under **libs\include**, to the project folder **Agora-Windows-Tutorial-1to1\sdk\include** (create if not exist). Then copy the **dll** file and **lib** file under **libs\x86**, to **sdk\dll** and **sdk\lib** respectively. diff --git a/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.zh.md b/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.zh.md index 1058794e..1be62ddf 100644 --- a/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.zh.md +++ b/One-to-One-Video/Agora-Windows-Tutorial-1to1/README.zh.md @@ -43,6 +43,10 @@ Agora 视频 SDK 支持 iOS / Android / Windows / macOS 等多个平台,你可 #define APP_ID _T("Your App ID") ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将 libs\include 中的文件,复制到 **Agora-Windows-Tutorial-1to1** 下的 **sdk\include** 文件夹下(如无该文件夹需新建)。并将 **libs\x86** 下的 **dll** 和 **lib** 文件分别复制到 **sdk\dll** 和 **sdk\lib** 文件夹下。 diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.md b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.md index c061834d..a68bb430 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.md @@ -45,6 +45,10 @@ To build and run the sample application, get an App ID: NSString *const token = @"<#Temp Token#>"; ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `Agora iOS Tutorial Objective-C` folder. diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.zh.md b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.zh.md index f7355f5f..c49fccb8 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.zh.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-Objective-C-1to1/README.zh.md @@ -45,13 +45,17 @@ iOS 系统版本升级至 14.0 版本后,用户首次使用集成了声网 iOS NSString *const token = @"<#Temp Token#>"; ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 Agora iOS Tutorial Objective-C 文件夹下。 - AgoraRtcEngineKit.framework - AgoraRtcCryptoLoader.framework - + 2. 最后使用 XCode 打开 Agora iOS Tutorial Objective-C.xcodeproj,连接 iPhone/iPad 测试设备,设置有效的开发者签名后即可运行。 ## 联系我们 diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.md b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.md index 8db963dd..50354e67 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.md @@ -46,6 +46,10 @@ To build and run the sample application, get an App Id: let Token: String? = <#Temp Token#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `Agora iOS Tutorial` folder. diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.zh.md b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.zh.md index 03dc4824..0e8c3c7c 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.zh.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/README.zh.md @@ -45,6 +45,10 @@ iOS 系统版本升级至 14.0 版本后,用户首次使用集成了声网 iOS let Token: String? = <#Temp Token#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 Agora iOS Tutorial 文件夹下。 diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.md b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.md index ebe0beed..cd8deec1 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.md @@ -44,6 +44,10 @@ To build and run the sample application, get an App Id: let Token: String? = <#Temp Token#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `Agora-iOS-Tutorial-SwiftUI-1to1` folder. diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.zh.md b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.zh.md index b910e2f9..05400b8d 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.zh.md +++ b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/README.zh.md @@ -45,6 +45,10 @@ iOS 系统版本升级至 14.0 版本后,用户首次使用集成了声网 iOS let Token: String? = <#Temp Token#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 Agora-iOS-Tutorial-SwiftUI-1to1 文件夹下。 diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.md b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.md index 1b586b9b..32fff92a 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.md +++ b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.md @@ -37,6 +37,10 @@ To build and run the sample application, get an App Id: NSString *const token = @"<#Temp Token#>"; ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `Agora Mac Tutorial Objective-C` folder. diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.zh.md b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.zh.md index c70c6115..42a0375f 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.zh.md +++ b/One-to-One-Video/Agora-macOS-Tutorial-Objective-C-1to1/README.zh.md @@ -37,6 +37,10 @@ NSString *const token = @"<#Temp Token#>"; ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 Agora Mac Tutorial Objective-C 文件夹下。 @@ -44,7 +48,7 @@ - AgoraRtcEngineKit.framework - AgoraRtcCryptoLoader.framework - libcrypto.a - + 2. 打开 Xcode 后,运行本项目。 ## 联系我们 diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.md b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.md index 6c259463..55d6924b 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.md +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.md @@ -37,6 +37,10 @@ To build and run the sample application, get an App Id: let Token: String? = <#Temp Token#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `Agora Mac Tutorial Swift` folder. diff --git a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.zh.md b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.zh.md index 20b4ef09..340b5eaa 100644 --- a/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.zh.md +++ b/One-to-One-Video/Agora-macOS-Tutorial-Swift-1to1/README.zh.md @@ -37,6 +37,10 @@ let Token: String? = <#Temp Token#> ``` +> 为提高项目的安全性,Agora 使用 Token(动态密钥)对即将加入频道的用户进行鉴权。 +> +> 临时 Token 仅作为演示和测试用途。在生产环境中,你需要自行部署服务器签发 Token,详见[生成 Token](https://docs.agora.io/cn/Interactive Broadcast/token_server)。 + ### 集成 Agora 视频 SDK 1. 在 [Agora.io SDK](https://www.agora.io/cn/blog/download/) 下载 **视频通话 + 直播 SDK**,解压后将其中**libs**文件夹中的下列文件拷贝到本项目的 Agora Mac Tutorial Swift 文件夹下。 From 82b02e4cbc3bebbf3bddf7bf036c1a514c2e99d5 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Wed, 7 Apr 2021 17:28:22 +0800 Subject: [PATCH 08/12] update missed token related information in readme --- Group-Video/OpenVideoCall-Android/README.md | 6 +- Group-Video/OpenVideoCall-Linux/README.md | 183 +++++++++--------- Group-Video/OpenVideoCall-Web/README.md | 4 + .../OpenVideoCall-Windows-MFC/README.md | 4 + Group-Video/OpenVideoCall-Windows/README.md | 6 +- .../OpenVideoCall-iOS-Objective-C/README.md | 4 + Group-Video/OpenVideoCall-iOS/README.md | 4 + Group-Video/OpenVideoCall-macOS/README.md | 4 + 8 files changed, 124 insertions(+), 91 deletions(-) diff --git a/Group-Video/OpenVideoCall-Android/README.md b/Group-Video/OpenVideoCall-Android/README.md index 48113b77..ed60f8d7 100755 --- a/Group-Video/OpenVideoCall-Android/README.md +++ b/Group-Video/OpenVideoCall-Android/README.md @@ -39,6 +39,10 @@ To build and run the sample application, get an App ID: <#YOUR TOKEN#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK The SDK must be integrated into the sample project before it can opened and built. There are two methods for integrating the Agora Video SDK into the sample project. The first method uses JCenter to automatically integrate the SDK files. The second method requires you to manually copy the SDK files to the project. @@ -69,7 +73,7 @@ Copy from SDK|Copy to Project Folder **x86** folder|**/app/src/main/jniLibs** folder **armeabi-v7a** folder|**/app/src/main/jniLibs** folder - +​ ### Run the Application diff --git a/Group-Video/OpenVideoCall-Linux/README.md b/Group-Video/OpenVideoCall-Linux/README.md index 081d19ac..3d2914de 100644 --- a/Group-Video/OpenVideoCall-Linux/README.md +++ b/Group-Video/OpenVideoCall-Linux/README.md @@ -1,89 +1,94 @@ -# Open Video Call Linux - -*Read this in other languages: [中文](README.zh.md)* - -The Open Video Call Linux Sample App is an open-source demo that will help you get video chat integrated directly into your Linux applications using the Agora Video SDK. - -With this sample app, you can: - -- Join / leave channel -- Mute / unmute audio -- Enable / disable video -- Change camera -- Setup resolution, frame rate and bit rate - -This demo is written in **C++** - -Agora Video SDK supports iOS / Android / Windows / macOS etc. You can find demos of these platform here: - -- [OpenVideoCall-Android](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Android) -- [OpenVideoCall-iOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-iOS) -- [OpenVideoCall-macOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-macOS) -- [OpenVideoCall-Windows](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Windows) - -## Running the App -First, create a developer account at [Agora.io](https://dashboard.agora.io/signin/), and obtain an App ID. set appID in run.sh - -``` ---appId "Your app ID" -``` - -Next, download the **Agora Video SDK** from [Agora.io SDK](https://www.agora.io/en/blog/download/). -Unzip the downloaded SDK package and copy -- libagora_rtc_sdk.so - -to the "OpenVideoCall/libs" folder in project(the old one may be over written). - -configue parameters in run.sh. -Using 'make' command to build the demo. Using ./run.sh to run demo -openVideoCall is a commandline demo. Commands as follows: -- open - - open video call -- close - - close video call -- enable_video - - enable/disable video, 'enable_video 0' means disable video, 'enable_video 1' means enable video -- enable_audio - - enable/disable audio, 'enable_audio 0' means disable audio, 'enable_audio 1' means enable audio -- enable_local_video - - enable/disable local video, 'enable_local_video 0' means disable local video(local camera), 'enable_local_video 1' means enable local video -- mute_local_video - - mute/unmute local video, 'mute_local_video 0' means unmute local video(local camera), 'mute_local_video 1' means mute local video -- mute_local_audio - - mute/unmute local audio, 'mute_local_audio 0' means unmute local audio(local audio device), 'mute_local_audio 1' means mute local audio -- print_device_info - - print video and audio device info -- set_cur_camera - - set current carmera,'set_cur_camera deviceId' you can get deviceID by print_device_info -- exit - - exit app - -## Developer Environment Requirements -* Ubuntu 12.04 x64 or higher -* CentOS 7 or higher -* gcc 4.8 or higher - - -## Contact Us - -- For potential issues, take a look at our [FAQ](https://docs.agora.io/en/faq) first -- Dive into [Agora SDK Samples](https://github.com/AgoraIO) to see more tutorials -- Take a look at [Agora Use Case](https://github.com/AgoraIO-usecase) for more complicated real use case -- Repositories managed by developer communities can be found at [Agora Community](https://github.com/AgoraIO-Community) -- You can find full API documentation at [Document Center](https://docs.agora.io/en/) -- If you encounter problems during integration, you can ask question in [Stack Overflow](https://stackoverflow.com/questions/tagged/agora.io) -- You can file bugs about this sample at [issue](https://github.com/AgoraIO/Basic-Video-Call/issues) - -## License - -The MIT License (MIT). +# Open Video Call Linux + +*Read this in other languages: [中文](README.zh.md)* + +The Open Video Call Linux Sample App is an open-source demo that will help you get video chat integrated directly into your Linux applications using the Agora Video SDK. + +With this sample app, you can: + +- Join / leave channel +- Mute / unmute audio +- Enable / disable video +- Change camera +- Setup resolution, frame rate and bit rate + +This demo is written in **C++** + +Agora Video SDK supports iOS / Android / Windows / macOS etc. You can find demos of these platform here: + +- [OpenVideoCall-Android](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Android) +- [OpenVideoCall-iOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-iOS) +- [OpenVideoCall-macOS](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-macOS) +- [OpenVideoCall-Windows](https://github.com/AgoraIO/Basic-Video-Call/tree/master/Group-Video/OpenVideoCall-Windows) + +## Running the App +First, create a developer account at [Agora.io](https://dashboard.agora.io/signin/), and obtain an App ID. set appID in run.sh + +``` +--appId "Your app ID" +``` + +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + +Next, download the **Agora Video SDK** from [Agora.io SDK](https://www.agora.io/en/blog/download/). +Unzip the downloaded SDK package and copy + +- libagora_rtc_sdk.so + +to the "OpenVideoCall/libs" folder in project(the old one may be over written). + +configue parameters in run.sh. +Using 'make' command to build the demo. Using ./run.sh to run demo +openVideoCall is a commandline demo. Commands as follows: +- open + + open video call +- close + + close video call +- enable_video + + enable/disable video, 'enable_video 0' means disable video, 'enable_video 1' means enable video +- enable_audio + + enable/disable audio, 'enable_audio 0' means disable audio, 'enable_audio 1' means enable audio +- enable_local_video + + enable/disable local video, 'enable_local_video 0' means disable local video(local camera), 'enable_local_video 1' means enable local video +- mute_local_video + + mute/unmute local video, 'mute_local_video 0' means unmute local video(local camera), 'mute_local_video 1' means mute local video +- mute_local_audio + + mute/unmute local audio, 'mute_local_audio 0' means unmute local audio(local audio device), 'mute_local_audio 1' means mute local audio +- print_device_info + + print video and audio device info +- set_cur_camera + + set current carmera,'set_cur_camera deviceId' you can get deviceID by print_device_info +- exit + + exit app + +## Developer Environment Requirements +* Ubuntu 12.04 x64 or higher +* CentOS 7 or higher +* gcc 4.8 or higher + + +## Contact Us + +- For potential issues, take a look at our [FAQ](https://docs.agora.io/en/faq) first +- Dive into [Agora SDK Samples](https://github.com/AgoraIO) to see more tutorials +- Take a look at [Agora Use Case](https://github.com/AgoraIO-usecase) for more complicated real use case +- Repositories managed by developer communities can be found at [Agora Community](https://github.com/AgoraIO-Community) +- You can find full API documentation at [Document Center](https://docs.agora.io/en/) +- If you encounter problems during integration, you can ask question in [Stack Overflow](https://stackoverflow.com/questions/tagged/agora.io) +- You can file bugs about this sample at [issue](https://github.com/AgoraIO/Basic-Video-Call/issues) + +## License + +The MIT License (MIT). diff --git a/Group-Video/OpenVideoCall-Web/README.md b/Group-Video/OpenVideoCall-Web/README.md index fb1772a6..2f42ca5c 100755 --- a/Group-Video/OpenVideoCall-Web/README.md +++ b/Group-Video/OpenVideoCall-Web/README.md @@ -32,6 +32,10 @@ To build and run the sample application, get an App ID: export const Token = "<#YOUR TEMP TOKEN HERE#>"; ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Install dependencies and integrate the Agora Video SDK diff --git a/Group-Video/OpenVideoCall-Windows-MFC/README.md b/Group-Video/OpenVideoCall-Windows-MFC/README.md index 0ff181d2..4d749476 100644 --- a/Group-Video/OpenVideoCall-Windows-MFC/README.md +++ b/Group-Video/OpenVideoCall-Windows-MFC/README.md @@ -48,6 +48,10 @@ To build and run the sample application, get an App ID: #define APP_ID _T("Your App ID") ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the **Agora Video SDK** from [Agora.io SDK](https://www.agora.io/en/blog/download/). Unzip the downloaded SDK package and copy the files under **libs\include**, to the project folder **OpenVideoCall-Windows-MFC\sdk\include** (create if not exist). Then copy the **dll** file and **lib** file under **libs\x86**, to **sdk\dll** and **sdk\lib** respectively. diff --git a/Group-Video/OpenVideoCall-Windows/README.md b/Group-Video/OpenVideoCall-Windows/README.md index b383bf45..07a306cf 100644 --- a/Group-Video/OpenVideoCall-Windows/README.md +++ b/Group-Video/OpenVideoCall-Windows/README.md @@ -37,12 +37,16 @@ First, create a developer account at [Agora.io](https://dashboard.agora.io/signi * #define APP_ID _T("Your App ID") +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + Next, download the **Agora Video SDK** from [Agora.io SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the **sdk** to the project folder(the old one may be over written). Finally, Open OpenVideoCall.pro with your Qt5.6(or higher) and build current project and run. * If you don't fill appid in the code file,you can place a file named AgoraConfigOpenVideoCall.ini in the executable path.The file content: - + [BaseInfo] AppId=xxxx diff --git a/Group-Video/OpenVideoCall-iOS-Objective-C/README.md b/Group-Video/OpenVideoCall-iOS-Objective-C/README.md index 74ede945..cff50d20 100644 --- a/Group-Video/OpenVideoCall-iOS-Objective-C/README.md +++ b/Group-Video/OpenVideoCall-iOS-Objective-C/README.md @@ -53,6 +53,10 @@ To build and run the sample application, get an App Id: } ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `OpenVideoCall` folder. diff --git a/Group-Video/OpenVideoCall-iOS/README.md b/Group-Video/OpenVideoCall-iOS/README.md index da922af5..bec03228 100755 --- a/Group-Video/OpenVideoCall-iOS/README.md +++ b/Group-Video/OpenVideoCall-iOS/README.md @@ -48,6 +48,10 @@ To build and run the sample application, get an App Id: static var Token: String? = <#Temp Access Token#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `OpenVideoCall` folder. diff --git a/Group-Video/OpenVideoCall-macOS/README.md b/Group-Video/OpenVideoCall-macOS/README.md index a6c9603d..2ceb572c 100755 --- a/Group-Video/OpenVideoCall-macOS/README.md +++ b/Group-Video/OpenVideoCall-macOS/README.md @@ -40,6 +40,10 @@ To build and run the sample application, get an App Id: static var Token: String? = <#Temp Access Token#> ``` +> To ensure communication security, Agora uses tokens (dynamic keys) to authenticate users joining a channel. +> +> Temporary tokens are for demonstration and testing purposes only and remain valid for 24 hours. In a production environment, you need to deploy your own server for generating tokens. See [Generate a Token](https://docs.agora.io/en/Interactive Broadcast/token_server)for details. + ### Integrate the Agora Video SDK 1. Download the [Agora Video SDK](https://www.agora.io/en/download/). Unzip the downloaded SDK package and copy the following files from the SDK `libs` folder into the sample application `OpenVideoCall` folder. From 2b8bcb26f1437528e1b6c7fa8dd65eff3e61348c Mon Sep 17 00:00:00 2001 From: xianing Date: Tue, 20 Apr 2021 05:09:23 -0700 Subject: [PATCH 09/12] remove useless permission --- .../app/src/main/AndroidManifest.xml | 1 - .../java/io/agora/openvcall/model/ConstantApp.java | 1 - .../java/io/agora/openvcall/ui/BaseActivity.java | 12 +----------- .../app/src/main/AndroidManifest.xml | 1 - .../tutorials1v1vcall/VideoChatViewActivity.java | 5 ++--- 5 files changed, 3 insertions(+), 17 deletions(-) diff --git a/Group-Video/OpenVideoCall-Android/app/src/main/AndroidManifest.xml b/Group-Video/OpenVideoCall-Android/app/src/main/AndroidManifest.xml index 1bd900d8..86144710 100644 --- a/Group-Video/OpenVideoCall-Android/app/src/main/AndroidManifest.xml +++ b/Group-Video/OpenVideoCall-Android/app/src/main/AndroidManifest.xml @@ -7,7 +7,6 @@ - 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, ConstantApp.PERMISSION_REQ_ID_WRITE_EXTERNAL_STORAGE); permissionGranted(); } else { finish(); } break; } - case ConstantApp.PERMISSION_REQ_ID_WRITE_EXTERNAL_STORAGE: { - if (grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - } else { - finish(); - } - break; - } } } diff --git a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/AndroidManifest.xml b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/AndroidManifest.xml index 364455f3..91deaa1e 100644 --- a/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/AndroidManifest.xml +++ b/One-to-One-Video/Agora-Android-Tutorial-1to1/app/src/main/AndroidManifest.xml @@ -9,7 +9,6 @@ - Date: Tue, 11 May 2021 15:45:12 +0800 Subject: [PATCH 10/12] remove AgoraJNDExtension.framework --- .../Agora-iOS-Tutorial.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index 493892fd..1ff9ba65 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -20,8 +20,6 @@ 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12D2614730900A4E4C3 /* Agorafdkaac.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; }; 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA12E2614730900A4E4C3 /* AgoraCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; }; - 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1302614730900A4E4C3 /* AgoraJNDExtension.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */; }; 8B6FA1412614730900A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1312614730900A4E4C3 /* AgoraRtcKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 8B6FA1422614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B6FA1322614730900A4E4C3 /* AgoraAIDenoiseExtension.framework */; }; @@ -54,7 +52,6 @@ 8B6FA1392614730900A4E4C3 /* Agorafdkaac.framework in Embed Frameworks */, 8B6FA1412614730900A4E4C3 /* AgoraRtcKit.framework in Embed Frameworks */, 8B6FA13B2614730900A4E4C3 /* AgoraCore.framework in Embed Frameworks */, - 8B6FA13F2614730900A4E4C3 /* AgoraJNDExtension.framework in Embed Frameworks */, 8B6FA1352614730900A4E4C3 /* Agoraffmpeg.framework in Embed Frameworks */, 8B6FA1452614730900A4E4C3 /* AgoraSoundTouch.framework in Embed Frameworks */, 8B6FA1432614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Embed Frameworks */, @@ -98,7 +95,6 @@ 8B6FA1382614730900A4E4C3 /* Agorafdkaac.framework in Frameworks */, 8B6FA1402614730900A4E4C3 /* AgoraRtcKit.framework in Frameworks */, 8B6FA13A2614730900A4E4C3 /* AgoraCore.framework in Frameworks */, - 8B6FA13E2614730900A4E4C3 /* AgoraJNDExtension.framework in Frameworks */, 8B6FA1342614730900A4E4C3 /* Agoraffmpeg.framework in Frameworks */, 8B6FA1442614730900A4E4C3 /* AgoraSoundTouch.framework in Frameworks */, 8B6FA1422614730900A4E4C3 /* AgoraAIDenoiseExtension.framework in Frameworks */, From 6a3ecd0baac69334f060fd1259b94dd39e255478 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Tue, 11 May 2021 16:35:30 +0800 Subject: [PATCH 11/12] fix azure build issue --- .../io/agora/openvcall/ui/BaseActivity.java | 2 +- .../OpenVideoCall.xcodeproj/project.pbxproj | 12 ++++++------ .../project.pbxproj | 17 ++++++++--------- .../project.pbxproj | 16 ++++++++-------- 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/BaseActivity.java b/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/BaseActivity.java index 4065d58b..0a530371 100644 --- a/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/BaseActivity.java +++ b/Group-Video/OpenVideoCall-Android/app/src/main/java/io/agora/openvcall/ui/BaseActivity.java @@ -80,7 +80,7 @@ public void run() { private boolean checkSelfPermissions() { return checkSelfPermission(Manifest.permission.RECORD_AUDIO, ConstantApp.PERMISSION_REQ_ID_RECORD_AUDIO) && - checkSelfPermission(Manifest.permission.CAMERA, ConstantApp.PERMISSION_REQ_ID_CAMERA) + checkSelfPermission(Manifest.permission.CAMERA, ConstantApp.PERMISSION_REQ_ID_CAMERA); } @Override diff --git a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj index 802d8f6f..0cb6c3b9 100644 --- a/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj +++ b/Group-Video/OpenVideoCall-iOS-Objective-C/OpenVideoCall.xcodeproj/project.pbxproj @@ -523,9 +523,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = JDPG69R49Z; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -544,7 +544,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "dc253ab3-71e4-40a3-a57c-a3a763407202"; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + PROVISIONING_PROFILE_SPECIFIER = App; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -553,9 +553,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = JDPG69R49Z; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -574,7 +574,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = "dc253ab3-71e4-40a3-a57c-a3a763407202"; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + PROVISIONING_PROFILE_SPECIFIER = App; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index 1ff9ba65..fb06a50f 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -231,7 +231,7 @@ TargetAttributes = { 1ABDEE3D1D383BE4007DE451 = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = JDPG69R49Z; + DevelopmentTeam = GM72UGLGZW; LastSwiftMigration = 1130; ProvisioningStyle = Manual; SystemCapabilities = { @@ -452,9 +452,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; - DEVELOPMENT_TEAM = JDPG69R49Z; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -471,8 +471,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; - SWIFT_INCLUDE_PATHS = ""; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -484,9 +483,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Haifeng Hong (MJP2F92AG6)"; - DEVELOPMENT_TEAM = JDPG69R49Z; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj index 7bc8686a..01f9b29c 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-SwiftUI-1to1/Agora-iOS-Tutorial-SwiftUI-1to1.xcodeproj/project.pbxproj @@ -356,10 +356,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; CODE_SIGN_STYLE = Manual; DEVELOPMENT_ASSET_PATHS = "\"Agora-iOS-Tutorial-SwiftUI-1to1/Preview Content\""; - DEVELOPMENT_TEAM = 5459N9W32M; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -371,9 +371,9 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.medialab.Agora-iOS-Tutorial-SwiftUI-1to1"; + PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial-SwiftUI-1to1"; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = medialab_develop; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -383,10 +383,10 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; CODE_SIGN_STYLE = Manual; DEVELOPMENT_ASSET_PATHS = "\"Agora-iOS-Tutorial-SwiftUI-1to1/Preview Content\""; - DEVELOPMENT_TEAM = 5459N9W32M; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -398,9 +398,9 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.medialab.Agora-iOS-Tutorial-SwiftUI-1to1"; + PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial-SwiftUI-1to1"; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = medialab_develop; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; From 09d6e96f751287286f637894f9b7ca359754e355 Mon Sep 17 00:00:00 2001 From: Xia Ning Date: Tue, 11 May 2021 16:43:05 +0800 Subject: [PATCH 12/12] fix azure build issue --- .../OpenVideoCall.xcodeproj/project.pbxproj | 8 ++++---- .../Agora-iOS-Tutorial.xcodeproj/project.pbxproj | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Group-Video/OpenVideoCall-iOS/OpenVideoCall.xcodeproj/project.pbxproj b/Group-Video/OpenVideoCall-iOS/OpenVideoCall.xcodeproj/project.pbxproj index ed003221..bc7bbe22 100644 --- a/Group-Video/OpenVideoCall-iOS/OpenVideoCall.xcodeproj/project.pbxproj +++ b/Group-Video/OpenVideoCall-iOS/OpenVideoCall.xcodeproj/project.pbxproj @@ -503,7 +503,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; - DEVELOPMENT_TEAM = JDPG69R49Z; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -522,7 +522,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; @@ -538,7 +538,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development: Qianze Zhang (3C9KJFP729)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development: Qianze Zhang (3C9KJFP729)"; - DEVELOPMENT_TEAM = JDPG69R49Z; + DEVELOPMENT_TEAM = GM72UGLGZW; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -557,7 +557,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.agora.OpenVideoCall; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.2; diff --git a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj index fb06a50f..f0710b25 100644 --- a/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj +++ b/One-to-One-Video/Agora-iOS-Tutorial-Swift-1to1/Agora-iOS-Tutorial.xcodeproj/project.pbxproj @@ -502,8 +502,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "io.agora.Agora-iOS-Tutorial"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = AgoraLab2020; - SWIFT_INCLUDE_PATHS = ""; + PROVISIONING_PROFILE_SPECIFIER = App; SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0;