cocos creator iOS原生分享接入

今天接到一个任务,需要做接入iOS的分享功能,于是我就去找方法,还真的给我找到了一些方法,于是我先调了一个最简单的给老大看,老大说行,有微信分享就可以,于是动手就是开干!
这里用的系统原生 UIActivityViewController分享,非常的简单,只需要调用一个接口,就可以打开分享界面,而且还支持多平台分享,一般是可以标题、图片还有链接,不过微信分享不支持图片和链接同时分享,具体情况可以查看这篇文章iOS 社会化分享方案总结,先看看图示:

分享界面-不要在意应用

说一下思路,因为这个是iOS源生分享,所以这个必然是要creator里js调用xCode的oc代码,详情可以看一下这里js与oc互相调用。然后oc那边代码也要先写好(者先确定好写在哪里),因为js调用oc需要确定调用代码所在类的名称以及自己的名称,参数。
下面就上代码吧!
我先把js调用oc的代码写好:

if (cc.sys.isNative&&cc.sys.os==cc.sys.OS_IOS) {//判断是否是源生平台并且是否是iOS平台
    //调用APPController类中的Share方法,并且传递参数
    jsb.reflection.callStaticMethod("AppController","Share:title:","title","message");
}

js这边就这样写好啦,接下来把项目打包成xCode项目,在xCode项目中的AppController.h中写入静态方法:

#import <UIKit/UIKit.h>
@class RootViewController;
@interface AppController : NSObject <UIApplicationDelegate>
{
}
+(BOOL)Share:(NSString *)str title:(NSString *)tit;
@property(nonatomic, readonly) RootViewController* viewController;
@end

在AppController.mm中实现:

+(NSString *)Share:(NSString *)str title:(NSString *)tit{
    NSString *textToShare = str; 
    NSURL *urlToShare = tit;
    //分享图片的话就可以加上下面两句,记得补充参数
    //UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"]; 
    //NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
    NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    //这里可能有个坑,下面说
    [self presentViewController:activityVC animated:YES completion:nil];
}

好啦,这样就应该走通啦!诶那个坑好像有条黄线!什么,居然没有presentViewController这个方法,这个博客是骗人的吧!于是我走遍各大博客,发现都是这样写的,到底是为什么没有用呢?难道这个AppController是个假的!我要去cocos creator找人理论去!于是就果然就找到了一个大佬用这个方法(评论很长,请使用ctrl+f查找):

大佬的使用方式

哦~原来是这样,那我也把我的self改一下:

    //解决了这个坑!
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:activityVC animated:YES completion:nil];

运行之后,大功告成,可以开心正常的分享啦~
诶,等等,老大说这些东西挡住了我微信分享,我不想要前面的那些,而且还有分享的状态我也不知道呀!行吧,我们那接着写,这里有些不想要的平台,也可以删除,分享状态,也可以通过回调判断,那我就放上最终代码啦:

+(NSString *)Share:(NSString *)str title:(NSString *)tit{
    NSString *textToShare = str; 
    NSURL *urlToShare = tit;
    //分享图片的话就可以加上下面两句,记得补充参数
    //UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"]; 
    //NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
    NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    //不显示的放在这里 
    activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
     //解决了这个坑!
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:activityVC animated:YES completion:nil];
     // 分享之后的回调
    activityVC.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
        if (completed) {
            //分享成功
            NSLog(@"成功啦~");
        } else  {
            //分享取消
            NSLog(@"失败惹...");
        }
    };

很开心,不过还是不知道那个坑的原理,可能cocoscreator对这个AppController做了手脚吧,所以只能通过应用获取到当前的Controller,这里只是猜测,原理不知道,先卸下来。
如果有大佬知道,可以指教一下~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279