我设置了Firebase App Invite,在选择了联系人后,它显示了一个小吃栏说:
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var path = require('path');
var allowInsecureHTTP = true;
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'xxx',
masterKey: process.env.MASTER_KEY || '',
serverURL: process.env.SERVER_URL || 'xxx.herokuapp.com/parse',
restAPIKey: 'xxx',
push:{
ios:{
pfx: 'Push.p12',
bundleId: 'xxx',
production: true
}
}
}, allowInsecureHTTP);
var dashboard = new ParseDashboard({
users: [{
user: 'admin',
pass: 'xxx'
}],
apps: [
{
serverURL: process.env.SERVER_URL + process.env.PARSE_MOUNT || 'https://xxx.herokuapp.com/',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '',
appName: process.env.APP_NAME || 'StoryTime',
iconName: 'Icon-60.png'
}
],
"iconsFolder": "icons"
}, allowInsecureHTTP);
var app = express();
app.use('/public', express.static(path.join(__dirname, '/public')));
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
//start the dashboard
app.use('/dashboard', dashboard);
app.get('/', function(req, res) {
res.status(200).send('I dream of being a website. Please star the parse- server repo on GitHub!');
});
var port = process.env.PORT || 1337;
var httpServer = require('http').createServer(app);
httpServer.listen(port, function() {
console.log('parse-server-example running on port ' + port + '.');
});
在onActivityResult中,它返回一个RESULT_OK,但当我通过
检查ID时Your invitation has been sent
它表示ids.length == 0.
为什么它不能返回ids但返回RESULT_OK?
有时我会收到短信邀请,但我永远不会收到电子邮件邀请。
这是我的gradlew:
String[] ids = AppInviteInvitation.getInvitationIds(resultCode, data);
Logger.INSTANCE.LogD(TAG, "onActivityResult: ids.size = " + ids.length );
App Invite功能:
compile 'com.google.firebase:firebase-invites:9.6.1'
apply plugin: 'com.google.gms.google-services'
classpath 'com.google.gms:google-services:3.0.0'
任何人都知道为什么我无法收到电子邮件邀请?我的短信邀请也不稳定。
答案 0 :(得分:2)
问题是,出于某种原因,当 emailHtmlContent 不包含有效的HTML时,Firebase只是无声地失败。恕我直言,它应该在创建intent时验证这一点,如果不正确则抛出异常。
难以准确地说出你的HTML中出现了什么问题,使用双重引号是很难读的。我宁愿描述我的解决方案:
将html放在资源文件中,如下所示:(注意CDATA,它允许您将html放在xml文件中,而无需转义):
<resources>
...
<string name="invitation_email_html_content"><![CDATA[<!DOCTYPE html>
<html>
<body>
<div>
<a href="%%APPINVITE_LINK_PLACEHOLDER%%">Install My App</a>
</div>
</body>
</html>]]></string>
</resources>
您构建意图:
Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
.setEmailSubject(getString(R.string.invitation_email_subject))
.setMessage(message)
.setEmailHtmlContent(getString(R.string.invitation_email_html_content))
.build();
startActivityForResult(intent, REQUEST_INVITE);
我还认为让firebase为你生成链接更好(正如我所做的那样,在你的html中放置%% APPINVITE_LINK_PLACEHOLDER %%),这是更便携的解决方案:在这种情况下,它会在点击时触发标准行为:如果尚未安装,请安装应用程序,或者如果已安装,则启动MainActivity。但这可能无法满足您的特定需求。
答案 1 :(得分:0)
在我的情况下,我已删除.setOtherPlatformsTargetApplication(...)
并再次发送电子邮件。当没有安装应用程序时,它会混淆其他平台上的链接。