原生实现邀请好友加入房间 网页跳app 分享跳app 微信跳app 微信 android ios 网页

Android 原生实现邀请好友加入房间

一.在 AndroidManifest.xml 文件中添加

<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="zhanlu.gdygame.li" android:scheme="ice" /> </intent-filter>

host 自由填写 尽可能避免与其他APP发生重复
以下是添加后AndroidManifest的完整代码:point_down:

一.在 AppActivity 中加入 initIntent() 方法

public void intIntent() { Uri uri = getIntent().getData(); String roomid = null; if (uri != null) { roomid = uri.getQueryParameter("roomid"); new Handler().postDelayed(new Runnable() { public void run() { Log.e("AppActivity", "roomid--------: " + roomid); // 保险起见 延迟一会在去调用JS代码 完成传参 (剩下的就是JS 中 收到房间号后进行加入房间的操作) } }, 2000); } }

分别在 AppActivity 的 onCreate() 和 onNewIntent() 方法中进行调用

注意:---------------------------------------------

在onNewIntent() 方法中调用前 需要先加

setIntent(intent);

以下是 onCreate 和 onNewIntent 的完整代码


iOS原生实现邀请好友加入房间

XCODE工程info.plist加入URLTypes
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>qmgdy</string> <key>CFBundleURLSchemes</key> <array> <string>gdy2ksdkfj8923kjsd2</string> </array> </dict> </array>
在appdelegate中实现以下方法
`- (BOOL)application:(UIApplication*)applicationhandleOpenURL:(NSURL *)url {
NSArray * urlBABA = [url.absoluteString componentsSeparatedByString:@"://"];

if (urlBABA.count > 0 && [urlBABA.firstObject isEqualToString:@"gdy2ksdkfj8923kjsd2"]){
    
    if (urlBABA.count > 1){
        
        NSArray * par = [urlBABA[1] componentsSeparatedByString:@"="];
        if (par.count > 1 && [par.firstObject isEqualToString:@"roomid"]){
            // 唤起js 告诉js app 要加入新的房间
            
            [PlatformSystem gotoShareRoom:par[1]];
            
        }
        
    }
    return YES;
}
return [WXApi handleOpenURL:url delegate:[PlatformSystem sharedPlatformSystem]];

}

  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSArray * urlBABA = [url.absoluteString componentsSeparatedByString:@"://"];

    if (urlBABA.count > 0 && [urlBABA.firstObject isEqualToString:@“gdy2ksdkfj8923kjsd2”]){

      if (urlBABA.count > 1){
          
          NSArray * par = [urlBABA[1] componentsSeparatedByString:@"="];
          if (par.count > 1 && [par.firstObject isEqualToString:@"roomid"]){
              // 唤起js 告诉js app 要加入新的房间
              
              [PlatformSystem gotoShareRoom:par[1]];
              
          }
          
      }
      return YES;
    

    }
    // 微信
    [WXApi handleOpenURL:url delegate:[PlatformSystem sharedPlatformSystem]];
    return YES;
    }

// NOTE: 9.0以后使用新API接口

  • (BOOL)application:(UIApplication *)app openURL:(NSURL )url options:(NSDictionary<NSString, id> *)options
    {
    NSArray * urlBABA = [url.absoluteString componentsSeparatedByString:@"://"];

    if (urlBABA.count > 0 && [urlBABA.firstObject isEqualToString:@“gdy2ksdkfj8923kjsd2”]){

      if (urlBABA.count > 1){
       
          NSArray * par = [urlBABA[1] componentsSeparatedByString:@"="];
          if (par.count > 1 && [par.firstObject isEqualToString:@"roomid"]){
              // 唤起js 告诉js app 要加入新的房间
              
              [PlatformSystem gotoShareRoom:par[1]];
              
          }
          
      }
      return YES;
    

    }

    // 微信
    [WXApi handleOpenURL:url delegate:[PlatformSystem sharedPlatformSystem]];
    return YES;
    }`

Safari跳app
链接协议格式:schemes + :// + 参数
如gdygameplatform://roomid=123456&userid=123456

qq群交流

11赞

mark,火钳刘明

mark

微信里的浏览器 可以直接跳转app ,吗?

明显不可以,四不四傻

不行的,要跳一下

mark

mark一下

虽然看不懂,但还是要支持一下。 至少标题取了这么长的名字。

我凑 难得看到的原生开发人员

谢谢,标题长是想着如果有需要的人尽可能的能搜索到

微信小游戏分享到微信群里能直接跳进去不?

可以啊,只要你约定好

图有点看不清

谢谢楼主,都是干货,mark

做房卡房,邀请功能时,绕不过去的东西。

前排占座

mark 跳转 分享

mark